Crates.io | tk-easyloop |
lib.rs | tk-easyloop |
version | 0.1.1 |
source | src |
created_at | 2017-01-06 23:28:07.311719 |
updated_at | 2017-01-30 13:53:33.131354 |
description | A thread local loop and other loop helpers |
homepage | http://github.com/tailhook/tk-easyloop |
repository | |
max_upload_size | |
id | 7962 |
size | 24,063 |
:Status: Beta :Documentation: http://docs.rs/tk-easyloop/
A main loop wrapper around tokio to provide thread-local loop which:
Avoids padding a Handle
in to every function
Mostly avoids common error: thread 'foo' panicked at 'no Task is currently running'
, by providing convenient run
function for all your
code involving futures
.. code-block:: rust
extern crate futures;
extern crate tk_easyloop;
use std::time::Duration;
use tk_easyloop::{run, timeout};
fn main() {
run(|| {
// should return some future, let's use a timeout
timeout(Duration::new(1, 0))
}).unwrap();
}
This crate uses thread-local storage for storing loop, but it doesn't mean multi-treading doesn't work. Multiple threads can be used too.
.. code-block:: rust
extern crate tk_easyloop;
use std::thread;
use std::time::Duration;
use tk_easyloop::{run, timeout};
fn main() {
let mut threads = Vec::new();
for thread_no in 0..10 {
threads.push(thread::spawn(move || {
run(|| {
timeout(Duration::new(1, 0))
})
}))
}
for t in threads {
t.join().unwrap().unwrap();
}
}
See examples/multi-threaded.rs
for more comprehensive example.
Licensed under either of
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.