美文网首页
理解 rust 中的 futures (二)

理解 rust 中的 futures (二)

作者: 西门早柿 | 来源:发表于2021-02-17 22:44 被阅读0次

    究竟什么是 future

    特别的,future 是一系列的异步操作所表示的一个值。future crate 的文档中将其定义为『一个尚未准备好的值的代理对象』。Rust 中的 futures 允许你将一个任务,比如说网络调用或者计算任务,定义成异步执行的。你可以在该任务的返回值上串联一些函数,用于转换结果,处理错误,和其它的 future 的返回值进行合并,或者一些很多的针对返回值的其它操作。这些函数只有在 future 被传递给一个 exectutor 时才会运行,比如 Tokio 库中的 run 函数。事实上,如果你在 future 超出它的作用域之前不去调用它,什么都不会发生。基于这个原因,future crate 将 future 声明为 must_use ,这样的话,如果你在 future 离开它的作用域之前都没有消费它,编译器就会发出警告。

    如果你熟悉 JavaScript 中的 promises 的话,你可能会对 future 的这些特性感到奇怪。在 JavaScript 中,promises 只能通过 event loop 来运行,没有其它的选择。JS 中的 'executor' 函数是立即执行的,但本质上,promise 仅仅是简单定义了一些延后执行的一系列指令。在 Rust 中,你可以使用多种异步策略来运行 executor。

    相关文章

      网友评论

          本文标题:理解 rust 中的 futures (二)

          本文链接:https://www.haomeiwen.com/subject/poqoxltx.html