macro_rules! request {
    ($($token:tt)*) => { ... };
}Expand description
Requests one of a set of possible values, refs, or tags from a provider.
If a value is found, its branch will be evaluated and none of the subsequent values will be requested from the provider.
§Usage
use dynamic_provider::{define_tag, request, Lt, ProvideRef};
define_tag! {
    /// A tag that requires an arg
    tag TagWithArg: for<'x, 'y, 'arg> &'arg i32 => i32;
    /// A tag that does not require an arg
    tag TagWithoutArg: for<'x, 'y, 'arg> i32;
}
fn get_number<'x, 'y>(provider: &'x mut dyn for<'arg> ProvideRef<Lt!['y, 'arg]>) -> i32 {
    let arg_value = 1;
    request! {
        from provider;
        // This line is optional unless the lifetime list cannot be inferred:
        in 'x, 'y, '_;
        // Request by tag with arg:
        tag x: TagWithArg where arg <- &arg_value => x,
        // Request by tag without arg:
        tag x: TagWithoutArg => x,
        // Request a 'static type:
        x: i32 => x,
        // Request a unique reference:
        ref mut x: i32 => *x,
        // Request a shared reference with an inferred type:
        ref x => *x,
        // When none of the above requests were fulfilled:
        else => 0,
    }
}§Notes
The else branch may also include a pattern that will be bound to the
original provider like so:
ⓘ
else provider => todo!()If there is no else branch at all, this macro evaluates to a Result
where Ok contains the output of one of the above branches, and Err
contains the original provider.