14 个不稳定版本 (6 个破坏性版本)
使用旧的 Rust 2015
0.8.0 | 2017年3月24日 |
---|---|
0.7.1 | 2017年3月21日 |
0.6.0 | 2016年7月29日 |
0.5.0 | 2016年3月26日 |
0.1.2 | 2015年4月19日 |
#458 in 并发
每月38次下载
在 2 crates 中使用
75KB
2K SLoC
coroutine-rs
Rust 的协程库
[dependencies.coroutine]
git = "0.5.0"
用法
协程的基本用法
extern crate coroutine;
use std::usize;
use coroutine::asymmetric::Coroutine;
fn main() {
let coro: Coroutine<i32> = Coroutine::spawn(|me,_| {
for num in 0..10 {
me.yield_with(num);
}
usize::MAX
});
for num in coro {
println!("{}", num.unwrap());
}
}
此程序将以下内容打印到控制台
0
1
2
3
4
5
6
7
8
9
18446744073709551615
更多详情,请运行 cargo doc --open
。
目标
-
基本的单线程协程支持
-
非对称协程
-
对称协程
-
线程安全:一次只能在一个线程中恢复一个协程
注意
-
由于某些不稳定特性,目前这个crate 只能 使用 Rust nightly 版本构建。
-
基本上它支持 arm、i686、mips、mipsel 和 x86_64 平台,但我们只测试了
-
OS X 10.10.*, x86_64, nightly
-
ArchLinux, x86_64, nightly
-
感谢
- Rust 开发者(从 libgreen 中切换上下文 ASM)
依赖关系
~560KB