Macro shipyard::try_system [−][src]
macro_rules! try_system {
($function : expr) => { ... };
}
Expand description
Reduce boilerplace to add a fallible system to a workload and make it less error prone.
This macro only works with systems returning a Result
.
Example
#[cfg(feature = "std")]
{
use shipyard::{error::RunWorkload, try_system, EntitiesViewMut, World};
use std::error::Error;
use std::fmt::{Debug, Display, Formatter};
#[derive(Debug)]
struct TerribleError;
impl Display for TerribleError {
fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), core::fmt::Error> {
Debug::fmt(self, fmt)
}
}
impl Error for TerribleError {}
fn my_sys(mut entities: EntitiesViewMut) -> Result<(), TerribleError> {
Err(TerribleError)
}
fn main() {
let world = World::new();
world
.add_workload("May fail")
.with_system(try_system!(my_sys))
.build();
match world.try_run_default().map_err(RunWorkload::custom_error) {
Err(Some(error)) => {
assert!(error.is::<TerribleError>());
}
_ => {}
}
}
}