Uses old Rust 2015
0.0.1 |
|
---|
#59 in #spawn
89KB
1.5K
SLoC
coroutine-rs
Coroutine library in Rust
[dependencies.coroutine-rs]
git = "https://github.com/rustcc/coroutine-rs.git"
Usage
Basic usage of Coroutine
extern crate coroutine;
use coroutine::coroutine::{spawn, sched};
fn main() {
// Spawn a new coroutine
let coro = spawn(move|| {
println!("Hello in coroutine!");
// Yield back to it's parent
sched();
println!("We are back!!");
// Spawn a new coroutine
spawn(move|| {
println!("Hello inside");
}).join().unwrap();
println!("Good bye");
});
coro.resume().unwrap();
println!("We are here!");
// Resume the coroutine
coro.resume().unwrap();
println!("Back to main.");
}
Goals
-
Basic single threaded coroutine support
-
Clonable coroutine handle
-
Thread-safe: can only resume a coroutine in one thread simultaneously
-
Multithreaded scheduler with work stealing feature
-
Asynchronous I/O supports
Dependencies
~405–660KB