planter_core/lib.rs
1#![cfg_attr(
2 not(test),
3 warn(
4 clippy::unwrap_in_result,
5 clippy::unwrap_used,
6 clippy::expect_used,
7 clippy::panic,
8 clippy::panic_in_result_fn,
9 clippy::float_cmp,
10 clippy::float_cmp_const,
11 clippy::missing_panics_doc,
12 clippy::missing_errors_doc,
13 clippy::todo,
14 clippy::cast_lossless,
15 clippy::cognitive_complexity,
16 clippy::missing_const_for_fn,
17 )
18)]
19//! This is a library with types and behaviour inspired by the PMBOK Guide 7th edition.
20
21/// A duration is a unit of time that represents the amount of time required to complete a task.
22pub mod duration;
23mod identifiable;
24/// Monetary values, stored as an integer count of a currency's minor unit (e.g. cents).
25/// Every amount carries its currency; costs come back as a `MultiCurrencyAmount` that
26/// keeps each currency separate rather than silently combining them.
27pub mod money;
28/// A person can either be a resource, a team member or a stakeholder.
29pub mod person;
30/// A project ties everything else in this crate together: tasks (which can nest into subtasks
31/// and carry time relationships to each other), the resources they engage, and the project's
32/// stakeholders. It's the entry point for computing overall cost.
33pub mod project;
34/// A resource is anything the project pays for. It's a named, cost-bearing thing with an
35/// optional contact; its cost has two independent parts, either of which may be absent:
36/// one-time purchases, and an hourly rate charged for the time a task engages it. The crate
37/// imposes no taxonomy of what a resource *is* - that classification is project-specific.
38pub mod resources;
39/// A stakeholder is a person or organization with an interest in the project: either an
40/// `Individual` (with contact details via [`person::Person`]) or an `Organization` (identified
41/// by name), each optionally carrying a description of that interest.
42pub mod stakeholders;
43/// A task is a unit of work needed to achieve the project's objectives. It can have a name, a
44/// description, a start and finish date, a duration, a completed flag, and resources assigned to
45/// it; it can also be nested into subtasks and related to other tasks in time.
46pub mod task;
47/// A human-readable name for a domain entity: trimmed, non-empty, length-capped, but otherwise
48/// unrestricted in content.
49pub mod title;
50
51pub use uuid::Uuid;