当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Generator用法及代码示例


本文简要介绍rust语言中 Trait core::ops::Generator 的用法。

用法

pub trait Generator<R = ()> {
    type Yield;
    type Return;
    fn resume(        self: Pin<&mut Self>,         arg: R    ) -> GeneratorState<Self::Yield, Self::Return>;
}

由内置生成器类型实现的特征。

生成器(通常也称为协程)目前是 Rust 中的一项实验性语言函数。在 RFC 2033 中添加的生成器目前主要旨在为 async/await 语法提供构建块,但可能会扩展到为迭代器和其他原语提供符合人体工程学的定义。

生成器的语法和语义不稳定,需要进一步的 RFC 来稳定。不过,此时的语法是closure-like:

#![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"),
    }
}

更多关于生成器的文档可以在不稳定的书中找到。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Trait core::ops::Generator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。