pub trait PipelineBuilder: Sized {
// Required methods
fn add_system_on_layer<AT: AccessType>(
&mut self,
name: &str,
system: System,
dependencies: &[&str],
layer: PipelineLayer,
lock_on_single_thread: bool
) -> Result<(), PipelineBuilderError>;
fn graph(self) -> PipelineGraph;
// Provided methods
fn add_system<AT: AccessType>(
&mut self,
name: &str,
system: System,
dependencies: &[&str]
) -> Result<(), PipelineBuilderError> { ... }
fn add_system_on_single_thread<AT: AccessType>(
&mut self,
name: &str,
system: System,
dependencies: &[&str]
) -> Result<(), PipelineBuilderError> { ... }
fn with_system_on_layer<AT: AccessType>(
self,
name: &str,
system: System,
dependencies: &[&str],
layer: PipelineLayer,
lock_on_single_thread: bool
) -> Result<Self, PipelineBuilderError> { ... }
fn with_system<AT: AccessType>(
self,
name: &str,
system: System,
dependencies: &[&str]
) -> Result<Self, PipelineBuilderError> { ... }
fn with_system_on_single_thread<AT: AccessType>(
self,
name: &str,
system: System,
dependencies: &[&str]
) -> Result<Self, PipelineBuilderError> { ... }
fn build<T>(self) -> T
where T: PipelineEngine + Default { ... }
fn build_with_engine<T>(self, engine: T) -> T
where T: PipelineEngine { ... }
}