范长春写的《深入浅出Rust》应该是目前能看到的用中文书写的Rust教程中的高端作品。看他的公众号,有一段有关协程Coroutine的文章,其中yield代码无法运行,查资料,改了一下,在当前Nightly版本编译通过。
#![feature(generators, generator_trait)]
use std::ops::{Generator, GeneratorState};
use std::pin::Pin;
fn main() {
let mut generator = || {
let mut curr : u64 = 1;
let mut next : u64 = 1;
loop {
let new_next = curr.checked_add(next);
if let Some(new_next) = new_next {
curr = next;
next = new_next;
yield curr; // <-- 新的关键字
} else {
return;
}
}
};
let mut generator =Pin::new(&mut generator);
loop {
match generator.as_mut().resume() {
GeneratorState::Yielded(v) => println!("{}", v),
GeneratorState::Complete(_) => return,
}
}
}
Ext Link: https://mp.weixin.qq.com/s/eKQ-e92yx9hxOLu9q1KzeA
1
共 0 条评论, 1 页
评论区
写评论还没有评论