pub struct Resource {
pub id: ResourceId,
pub name: String,
pub rate: Option<Money>,
pub capacity: f32,
pub calendar: Option<CalendarId>,
pub efficiency: f32,
pub attributes: HashMap<String, String>,
pub specializes: Option<ProfileId>,
pub availability: Option<f32>,
}Expand description
A person or equipment that can be assigned to tasks
Fields§
§id: ResourceIdUnique identifier
name: StringHuman-readable name
rate: Option<Money>Cost rate (per time unit)
capacity: f32Capacity (1.0 = full time, 0.5 = half time)
calendar: Option<CalendarId>Custom calendar (overrides project default)
efficiency: f32Efficiency factor (default 1.0)
attributes: HashMap<String, String>Custom attributes
specializes: Option<ProfileId>Profile that this resource specializes (constraint refinement)
availability: Option<f32>Availability (0.0-1.0, multiplied with calendar hours) Separate from capacity for progressive refinement semantics
Implementations§
Source§impl Resource
impl Resource
Sourcepub fn efficiency(self, efficiency: f32) -> Self
pub fn efficiency(self, efficiency: f32) -> Self
Set the efficiency factor
Sourcepub fn specializes(self, profile: impl Into<String>) -> Self
pub fn specializes(self, profile: impl Into<String>) -> Self
Set the profile this resource specializes (RFC-0001)
Sourcepub fn availability(self, availability: f32) -> Self
pub fn availability(self, availability: f32) -> Self
Set the availability (RFC-0001)
Availability is multiplied with calendar hours to get effective capacity. Example: 0.8 availability × 8h/day calendar = 6.4 effective hours/day
Sourcepub fn effective_availability(&self) -> f32
pub fn effective_availability(&self) -> f32
Get effective availability (defaults to 1.0 if not set)
Sourcepub fn is_specialized(&self) -> bool
pub fn is_specialized(&self) -> bool
Check if this resource specializes a profile