[Canonical page](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/overview/>)
[Full documentation index](<https://docs.dhtmlx.com/planning-engine/llms.txt>)


# evaluate

Types for scoring alternative change sets against the accepted state of a [`Project`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/project/project.md>). You pass a list of [`Candidate`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/candidate.md>) values and [`EvaluateOptions`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/evaluate-options.md>) to `Project::evaluate`, or to `Project::evaluate_with` together with an [`Execution`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/execution.md>) mode. Each candidate runs on a disposable copy, so the project itself doesn't change.

The call returns an [`EvaluateResult`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/evaluate-result.md>): baseline [`Metrics`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/metrics.md>) plus one [`CandidateResult`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/candidate-result.md>) per candidate. The rest of the folder holds the parts of those metrics: [`LeveledMetrics`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/leveled-metrics.md>), [`Finish`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/finish.md>), [`TaskFinish`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/task-finish.md>), [`Shift`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/shift.md>), [`Amount`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/amount.md>), [`Overload`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/overload.md>), [`ResourceOverload`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/resource-overload.md>) and [`FocusOverload`](<https://docs.dhtmlx.com/planning-engine/rust/api/core/evaluate/focus-overload.md>). Everything is re-exported at the crate root, so you import `plen_core::Candidate`, not an internal module path.

:::category-index
:::