Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn trampoline<In, Out, F>(init: In, mut func: F) -> Out
- where F: FnMut(In) -> Result<Out, In>
- {
- let mut arg = init;
- loop {
- match func(arg) {
- Ok(out) => return out,
- Err(new) => arg = new,
- }
- }
- }
- fn main() {
- println!("{}", trampoline((5, 1), |(n, acc)| if n <= 1 { Ok(acc) } else { Err((n - 1, acc * n)) }));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement