#promise #javascript #future #async #sender-receiver

promises

Rust中的高效、简单、轻量级JavaScript Promise

2个不稳定版本

使用旧Rust 2015

0.2.0 2016年3月28日
0.1.0 2016年3月28日

异步 中排名第1280

MIT许可

13KB
220行(不包括注释)

rust-promises

这个库旨在在Rust中完整、有效且简单地重现轻量级JavaScript风格的Promise。

rust-promises提供了Ecmascript 6 Promise的所有功能,以及一些来自Rust的Result<T, E>的方法,这些方法使用std::thread API和Rust的异步SenderReceiver实现。

示例

待办事项(在向Promise添加一些Result方法之后)。

为什么?

Promise是异步编程的一个优秀构建块。它们是构建异步库的绝佳方式,也是现有代码的一个小型依赖。

JavaScript的Promise是从一种名为E的编程语言中的Promise改编而来,E语言使用消息传递拥有一个非常强大的分布式计算架构。

Rust的std::sync::mpsc::{Sender, Receiver}提供了一种从Rust的安全线程系统中构建此类架构(以及Promise)的方式。

哦,又一个Promise库

目前crates.io上有5个异步库提供Promise或Future。然而,它们都存在问题

  • 它们都处于beta和不稳定状态,版本小于0.5(就像这个库现在一样...)
  • 其中一些是更大的异步库。它们需要你在事件循环中进行编程,或者是为特定场景设计的。如果你想使用一个全功能的异步库来处理特定类型的编程,就去使用那些。
  • 其余的都是Promise概念的变体,即从Promise::new()返回一个(Future, Promise)对。如果你知道如何使用它,就去那些库吧,我想。

没有运行时依赖