Simple, elegant task with continuitation and await
Currently only via github. Crates.io coming soon...
git clone https://github.com/Muraad/Tasks.rs.git
or using Cargo.toml
[dependencies.tasks]
git = "https://github.com/Muraad/Tasks.rs"
Dependencies are
[dependencies]
lazy_static = "*"
[dependencies.threadpool]
version = "*"
features = ["scoped-pool"]
extern crate tasks;
use tasks::task::{Task};
use std::io;
use std::io::prelude::*;
fn main() {
let x = 42;
// Via global DEFAULT_POOL
for _ in 0..1000 {
Task::run(|| { println!("Hello World!"); 42 })
.continue_with(move |msg| format!("Continuitation = {}", msg + x))
.continue_with(|msg| println!("{}", msg));
}
// Continuitations via overloaded ">>" operator
let finished_task = Task::run(|| 42 )
>> { |i| format!("{}, {}", i, 43) }
>> { |s| format!("{}, {}", s, 44) }
>> { |s| format!("{}, {}", s, 45) }
>> { |s| format!("{}, {}", s, 46) }
>> { |s| format!("{}, {}", s, 47) }
>> { |s| { println!("{}", s); "Finished" } };
let finished_msg = finished_task.await();
println!("Finished message: {}", finished_msg);
}