Mercurial > lbo > hg > lazycall
view lazycall_support/src/lib.rs @ 0:7401c615042c
Initial commit
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 20 Nov 2020 22:15:20 +0100 |
parents | |
children | babb2f9cb5ad |
line wrap: on
line source
pub struct LazyVal<'a, Result>(&'a mut dyn FnMut() -> Result); impl<'a, Result> LazyVal<'a, Result> { fn new<F: 'a + FnMut() -> Result>(f: &'a mut F) -> LazyVal<'a, Result> { LazyVal(f) } } pub trait Evaluate<R> { fn eval(self) -> R; } impl<'a, R> Evaluate<R> for LazyVal<'a, R> { fn eval(self) -> R { (self.0)() } } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }