assemble_core/task/task_io/work.rs
1//! Traits and implementations for simplifying work model
2
3use crate::project::error::ProjectResult;
4use crate::task::work_handler::WorkHandler;
5
6/// Add some type to a work handle.
7///
8/// When using `TaskIO` or `AddWork` derive, accessed using `#[flatten]` for inner
9/// fields.
10pub trait AddWork {
11 /// Adds this object to a work handler, registering inputs and outputs
12 /// as applicable.
13 fn add_work(&self, handle: &mut WorkHandler) -> ProjectResult;
14}
15
16/// Add some input to a work handler
17pub trait AddWorkInput {
18 /// Adds this object to a work handler, registering inputs only
19 fn add_input(&self, handle: &mut WorkHandler) -> ProjectResult;
20}
21
22/// Add some output to a work handler
23pub trait AddWorkOutput {
24 /// Adds this object to a work handler, registering output only
25 fn add_output(&self, handle: &mut WorkHandler) -> ProjectResult;
26}