pub struct Task {Show 17 fields
pub id: TaskId,
pub name: String,
pub summary: Option<String>,
pub effort: Option<Duration>,
pub duration: Option<Duration>,
pub depends: Vec<Dependency>,
pub assigned: Vec<ResourceRef>,
pub priority: u32,
pub constraints: Vec<TaskConstraint>,
pub milestone: bool,
pub children: Vec<Task>,
pub complete: Option<f32>,
pub actual_start: Option<NaiveDate>,
pub actual_finish: Option<NaiveDate>,
pub explicit_remaining: Option<Duration>,
pub status: Option<TaskStatus>,
pub attributes: HashMap<String, String>,
}Expand description
A schedulable unit of work
Fields§
§id: TaskIdUnique identifier
name: StringHuman-readable description (from quoted string in DSL)
summary: Option<String>Optional short display name (MS Project “Task Name” style)
effort: Option<Duration>Work effort required (person-time)
duration: Option<Duration>Calendar duration (overrides effort-based calculation)
depends: Vec<Dependency>Task dependencies
assigned: Vec<ResourceRef>Resource assignments
priority: u32Scheduling priority (higher = scheduled first)
constraints: Vec<TaskConstraint>Scheduling constraints
milestone: boolIs this a milestone (zero duration)?
children: Vec<Task>Child tasks (WBS hierarchy)
complete: Option<f32>Completion percentage (for tracking)
actual_start: Option<NaiveDate>Actual start date (when work actually began)
actual_finish: Option<NaiveDate>Actual finish date (when work actually completed)
explicit_remaining: Option<Duration>Explicit remaining duration (overrides linear calculation from complete%)
When set, this takes precedence over duration * (1 - complete/100)
status: Option<TaskStatus>Task status for progress tracking
attributes: HashMap<String, String>Custom attributes
Implementations§
Source§impl Task
impl Task
Sourcepub fn summary(self, summary: impl Into<String>) -> Self
pub fn summary(self, summary: impl Into<String>) -> Self
Set the task summary (short display name)
Sourcepub fn depends_on(self, predecessor: impl Into<String>) -> Self
pub fn depends_on(self, predecessor: impl Into<String>) -> Self
Add a dependency (FinishToStart by default)
Sourcepub fn with_dependency(self, dep: Dependency) -> Self
pub fn with_dependency(self, dep: Dependency) -> Self
Add a dependency with full control over type and lag
Sourcepub fn assign_with_units(self, resource: impl Into<String>, units: f32) -> Self
pub fn assign_with_units(self, resource: impl Into<String>, units: f32) -> Self
Assign a resource with specific allocation units
Units represent allocation percentage: 1.0 = 100%, 0.5 = 50%, etc. This affects effort-driven duration calculation: Duration = Effort / Total_Units
Sourcepub fn constraint(self, constraint: TaskConstraint) -> Self
pub fn constraint(self, constraint: TaskConstraint) -> Self
Add a temporal constraint
Sourcepub fn is_summary(&self) -> bool
pub fn is_summary(&self) -> bool
Check if this is a summary task (has children)
Sourcepub fn remaining_duration(&self) -> Duration
pub fn remaining_duration(&self) -> Duration
Calculate remaining duration based on completion percentage. Uses linear interpolation: remaining = original × (1 - complete/100)
Sourcepub fn effective_percent_complete(&self) -> u8
pub fn effective_percent_complete(&self) -> u8
Get effective completion percentage as u8 (0-100). Returns 0 if not set, clamped to 0-100 range.
Sourcepub fn derived_status(&self) -> TaskStatus
pub fn derived_status(&self) -> TaskStatus
Derive task status from actual dates and completion. Returns explicit status if set, otherwise derives from data. For containers, uses effective_progress() to derive status from children.
Sourcepub fn is_container(&self) -> bool
pub fn is_container(&self) -> bool
Check if this task is a container (has children)
Sourcepub fn container_progress(&self) -> Option<u8>
pub fn container_progress(&self) -> Option<u8>
Calculate container progress as weighted average of children by duration. Returns None if not a container or if no children have duration. Formula: Σ(child.percent_complete × child.duration) / Σ(child.duration)
Sourcepub fn effective_progress(&self) -> u8
pub fn effective_progress(&self) -> u8
Get the effective progress for this task, considering container rollup. For containers: returns derived progress from children (unless manually overridden). For leaf tasks: returns the explicit completion percentage.
Sourcepub fn progress_mismatch(&self, threshold: u8) -> Option<(u8, u8)>
pub fn progress_mismatch(&self, threshold: u8) -> Option<(u8, u8)>
Check if container progress significantly differs from manual override. Returns Some((manual, derived)) if mismatch > threshold, None otherwise.
Sourcepub fn actual_start(self, date: NaiveDate) -> Self
pub fn actual_start(self, date: NaiveDate) -> Self
Set the actual start date (builder pattern)
Sourcepub fn actual_finish(self, date: NaiveDate) -> Self
pub fn actual_finish(self, date: NaiveDate) -> Self
Set the actual finish date (builder pattern)
Sourcepub fn explicit_remaining(self, remaining: Duration) -> Self
pub fn explicit_remaining(self, remaining: Duration) -> Self
Set explicit remaining duration (builder pattern)
When set, this overrides the linear calculation duration * (1 - complete/100)
Sourcepub fn with_status(self, status: TaskStatus) -> Self
pub fn with_status(self, status: TaskStatus) -> Self
Set the task status (builder pattern)