Skip to main content

init_scope

Function init_scope 

Source
pub fn init_scope<T, E, F, I>(make_init: F) -> impl Init<T, E>
where F: FnOnce() -> Result<I, E>, I: Init<T, E>,
Expand description

Construct an initializer in a closure and run it.

Returns an initializer that first runs the closure and then the initializer returned by it.

See also pin_init_scope.

ยงExamples

fn init_foo() -> impl Init<Foo, Error> {
    init_scope(|| {
        let bar = lookup_bar()?;
        Ok(init!(Foo { a: bar.a.into(), b: bar.b }? Error))
    })
}

This initializer will first execute lookup_bar(), match on it, if it returned an error, the initializer itself will fail with that error. If it returned Ok, then it will run the initializer returned by the init! invocation.