9 个版本

使用旧 Rust 2015

0.1.7 2016 年 5 月 4 日
0.1.6 2016 年 4 月 2 日
0.1.5 2015 年 12 月 22 日
0.1.4 2015 年 8 月 16 日
0.0.1 2015 年 3 月 31 日

#1899异步

Download history 108/week @ 2024-03-11 97/week @ 2024-03-18 108/week @ 2024-03-25 135/week @ 2024-04-01 84/week @ 2024-04-08 88/week @ 2024-04-15 113/week @ 2024-04-22 69/week @ 2024-04-29 87/week @ 2024-05-06 82/week @ 2024-05-13 75/week @ 2024-05-20 84/week @ 2024-05-27 70/week @ 2024-06-03 52/week @ 2024-06-10 98/week @ 2024-06-17 84/week @ 2024-06-24

316 每月下载量
用于 4 个 crate (2 直接)

MIT 许可

125KB
2.5K SLoC

Eventual - Rust 的 Future & Stream

Eventual 为 Rust 提供了 Future & Stream 抽象以及一些用于操作它们的计算构建器。

Build Status

使用方法

要使用 Eventual,首先将以下内容添加到您的 Cargo.toml

[dependencies.eventual]
git = "https://github.com/carllerche/eventual"

然后,将以下内容添加到您的 crate 根目录

extern crate eventual;

lib.rs:

异步计算的组合原语

async 模块包含用于管理异步计算的实用工具。这些实用工具主要围绕 FutureStream 类型,以及允许在这些类型上组合计算的功能。

Future

Future 是一个代理,表示计算的结果,该结果可能尚未完成。该计算可能正在另一个线程中并发运行,或者在异步回调完成后触发。一种思考 Future 的方式是将其视为一个 Result,其中值是异步计算的。

例如

use eventual::*;

// Run a computation in another thread
let future1 = Future::spawn(|| {
    // Represents an expensive computation, but for now just return a
    // number
    42
});

// Run another computation
let future2 = Future::spawn(|| {
    // Another expensive computation
    18
});

let res = join((
        future1.map(|v| v * 2),
        future2.map(|v| v + 5)))
    .and_then(|(v1, v2)| Ok(v1 - v2))
    .await().unwrap();

assert_eq!(61, res);

Stream

StreamFuture 类似,但与表示单个值不同,它表示一系列值。

依赖项

~0.8–1.2MB
~19K SLoC