Skip to main content

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}