Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pub enum Workload<T> {
- Done(T),
- More(Box<dyn FnOnce() -> Workload<T>>)
- }
- impl<T> Workload<T> {
- pub fn done(t: T) -> Workload<T> {
- Workload::Done(t)
- }
- pub fn more<K: FnOnce() -> Workload<T>>(k: K) -> Self {
- Workload::More(Box::new(k))
- }
- pub fn bind<U, K: FnOnce(&mut T) -> Workload<U>>(&mut self, next: K) -> Workload<U> {
- match self {
- Workload::Done(val) => next(val),
- Workload::More(fun) => fun().bind(next)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement