AnalyticsOptions#

Selects the analytics that a call adds to ScheduleResult::analytics. It's set as the analytics field of SolveOptions, PreviewOptions and AnalyzeOptions. AnalyticsOptions::default() requests nothing.

Declaration#

#[derive(Clone, Debug, Default, PartialEq)]
pub struct AnalyticsOptions {
    pub slack: bool,
    pub critical_path: bool,
}

Fields#

Field Type Default Description
slack bool false Fills Analytics::slack with one TaskSlack entry per active leaf task and milestone.
critical_path bool false Fills Analytics::critical_path with the critical tasks and links as a Critical.

When both fields are false, result.analytics is None. When at least one is true, result.analytics is Some, and fields that weren't requested stay None. Check Analytics::status before reading them.

Example#

use plen_core::{AnalyticsOptions, Project, ProjectData, SolveOptions};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut project = Project::default();
    let options = SolveOptions {
        analytics: AnalyticsOptions {
            slack: true,
            critical_path: true,
        },
        ..Default::default()
    };

    let result = project.solve(Some(ProjectData::default()), &options)?;
    if let Some(analytics) = &result.analytics {
        if let Some(critical) = &analytics.critical_path {
            println!("{} critical tasks", critical.tasks.len());
        }
    }
    Ok(())
}