Trait core::ops::Generator [−][src]
pub trait Generator<R = ()> { type Yield; type Return; fn resume(
self: Pin<&mut Self>,
arg: R
) -> GeneratorState<Self::Yield, Self::Return>; }
Expand description
由内置生成器类型实现的 trait。
生成器 (通常也称为协程) 是 Rust 中的一种实验语言功能。 RFC 2033 中添加的生成器目前主要用于为 async/await 语法提供构建块,但可能会扩展为还为迭代器和其他原语提供符合人体工程学的定义。
生成器的语法和语义不稳定,将需要进一步的 RFC 来稳定。但是,此时的语法类似于闭包:
#![feature(generators, generator_trait)] use std::ops::{Generator, GeneratorState}; use std::pin::Pin; fn main() { let mut generator = || { yield 1; return "foo" }; match Pin::new(&mut generator).resume(()) { GeneratorState::Yielded(1) => {} _ => panic!("unexpected return from resume"), } match Pin::new(&mut generator).resume(()) { GeneratorState::Complete("foo") => {} _ => panic!("unexpected return from resume"), } }Run
在不稳定的书中可以找到有关生成器的更多文档。
Associated Types
此生成器产生的值的类型。
此关联类型对应于 yield
表达式以及每次生成器产生时都允许返回的值。
例如,作为一个迭代器的迭代器可能将这种类型作为 T
进行迭代。
Required methods
恢复此生成器的执行。
此函数将恢复生成器的执行,如果尚未生成,则开始执行。
该调用将返回到生成器的最后一个暂停点,从最新的 yield
恢复执行。
生成器将继续执行,直到它屈服或返回为止,此时该函数将返回。
返回值
从此函数返回的 GeneratorState
枚举指示生成器在返回时处于什么状态。
如果返回了 Yielded
成员,则生成器已达到暂停点,并且已产生一个值。
此状态下的生成器可在稍后恢复。
如果返回 Complete
,则生成器将完全完成所提供的值。再次恢复生成器是无效的。
Panics
如果先前已返回 Complete
成员后调用此函数,则它可能为 panic。
尽管在 Complete
之后恢复时,将语言中的生成器字面量保证为 panic,但对于 Generator
trait 的所有实现均不能保证。