pub struct ExecBuilder<M: FullMachine, D: Send + 'static, E: 'static, A> { /* private fields */ }Expand description
A builder for machine-check execution.
Using a builder allows richer configuration of system execution. Notably, it is possible to define user macros that can be used in properties.
Implementations§
Source§impl<M: FullMachine, D: Send + 'static, E: 'static, A: Args + 'static> ExecBuilder<M, D, E, A>
impl<M: FullMachine, D: Send + 'static, E: 'static, A: Args + 'static> ExecBuilder<M, D, E, A>
Sourcepub fn new(instantiation_fn: fn(A) -> Result<(M, D), E>) -> Self
pub fn new(instantiation_fn: fn(A) -> Result<(M, D), E>) -> Self
Creates the builder.
The function instantiation_fn should take supplied system arguments
and return a tuple of the instantiated system and custom system data
that can be used within custom property macros, or an error
on a failure to instantiate the system.
Logging is initialised before instantiation_fn is called,
so it can be used in instantiation_fn normally.
Source§impl<M: FullMachine, D: Send + 'static, E: 'static, A> ExecBuilder<M, D, E, A>
impl<M: FullMachine, D: Send + 'static, E: 'static, A> ExecBuilder<M, D, E, A>
Sourcepub fn property_macro(self, name: String, macro_fn: PropertyMacroFn<D>) -> Self
pub fn property_macro(self, name: String, macro_fn: PropertyMacroFn<D>) -> Self
Adds a custom macro that can be used within properties.
The macro is called as a function-like macro using the given name.
The macro function macro_fn is called when processing a property
containing this macro with a reference to custom system data
and a proc_macro2::TokenStream. On success, it should return
proc_macro2::TokenStream with the tokens it will be replaced with.
For example, a custom property macro with name example can be called
within properties as example!(example_data).
Sourcepub fn execute(
self,
exec_args: ExecArgs,
system_args: A,
) -> Result<ExecResult, E>
pub fn execute( self, exec_args: ExecArgs, system_args: A, ) -> Result<ExecResult, E>
Executes machine-check with the given execution and system arguments.
The inputs exec_args and system_args are typically to be given
from the result of crate::parse_args.
Consumes the builder and returns an execution result or an error from the system creator function.
Auto Trait Implementations§
impl<M, D, E, A> Freeze for ExecBuilder<M, D, E, A>
impl<M, D, E, A> !RefUnwindSafe for ExecBuilder<M, D, E, A>
impl<M, D, E, A> !Send for ExecBuilder<M, D, E, A>
impl<M, D, E, A> !Sync for ExecBuilder<M, D, E, A>
impl<M, D, E, A> Unpin for ExecBuilder<M, D, E, A>
impl<M, D, E, A> !UnwindSafe for ExecBuilder<M, D, E, A>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more