pub fn lazy<F, R>(f: F) -> Lazy<F, R> where
F: FnOnce() -> R,
R: IntoFuture,
Expand description
Creates a new future which will eventually be the same as the one created by the closure provided.
The provided closure is only run once the future has a callback scheduled on it, otherwise the callback never runs. Once run, however, this future is the same as the one the closure creates.
Examples
use futures::future::*;
let a = lazy(|| ok::<u32, u32>(1));
let b = lazy(|| -> FutureResult<u32, u32> {
panic!("oh no!")
});
drop(b); // closure is never run