18 个版本
0.1.17 | 2021 年 1 月 5 日 |
---|---|
0.1.16 | 2020 年 12 月 29 日 |
0.1.15 | 2020 年 11 月 6 日 |
0.1.13 | 2020 年 6 月 2 日 |
0.1.5 | 2019 年 3 月 4 日 |
在 异步 中排名第 2015
每月下载量 26,719
用于 67 个 crate(直接使用 4 个)
17KB
227 行
futures-enum
#[derive(Future, Stream, Sink, AsyncRead, AsyncWrite, AsyncSeek, AsyncBufRead)] for 枚举。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
futures-enum = "0.1.16"
futures = "0.3"
编译器支持:需要 rustc 1.36+
示例
use futures_enum::*;
use std::future::Future;
#[derive(Future, Stream, Sink, AsyncRead, AsyncWrite, AsyncSeek, AsyncBufRead)]
enum Either<A, B> {
A(A),
B(B),
}
fn foo(x: i32) -> impl Future<Output = i32> {
if x < 0 {
Either::A(async { 1 })
} else {
Either::B(async move { x })
}
}
futures-enum 即使依赖项中只包含子 crate,如 futures-core
、futures-io
、futures-sink
等,也能很好地工作。
有关如何自动化此类模式的更多信息,请参阅 auto_enums crate。
支持的特质
Future
- 生成的代码Stream
- 生成的代码Sink
- 生成的代码AsyncRead
- 生成的代码AsyncWrite
- 生成的代码AsyncSeek
- 生成的代码AsyncBufRead
- 生成的代码
相关项目
- auto_enums:一个允许通过自动生成的枚举实现多种返回类型的库。
- derive_utils:一个过程宏助手,用于轻松编写[derives宏][proc-macro-derive]用于枚举。
- io-enum:为枚举提供 #[derive(Read, Write, Seek, BufRead)]。
- iter-enum:为枚举提供 #[derive(Iterator, DoubleEndedIterator, ExactSizeIterator, Extend)]。
许可证
您可以选择在Apache License, Version 2.0或MIT许可证下使用。
除非您明确表示,否则根据Apache-2.0许可证定义,您提交给作品以供包含的任何贡献将根据上述条款双重许可,没有任何附加条款或条件。
依赖项
~1.5MB
~38K SLoC