1 2 3 4 5 6 7 8 9 10 11 12
pub trait TailRec: Sized { #[inline] fn tailrec<B, F>(self, f: F) -> B where F: Fn(Self) -> Result<Self, B> { let mut res = f(self); loop { match res { Ok (v) => { res = f(v); } Err(e) => { return e } }} } } impl<A> TailRec for A {}