ExecBuilder

Struct ExecBuilder 

Source
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>

Source

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>

Source

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).

Source

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> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.