1 个不稳定版本
0.1.0 | 2019 年 12 月 10 日 |
---|
#2193 在 Rust 模式
4KB
ufcs.rs
ufcs::Pipe
— 使用方法调用语法调用自由函数的辅助特质。
Rust 已经允许使用函数调用语法调用方法,但不能反过来。这个 crate 通过提供简单的辅助特质 Pipe
来填补这个空白。
使用方法
Cargo.toml
[dependencies]
ufcs = "0.1.0"
Rust 代码
use ufcs::Pipe;
示例
// Write this
foo().pipe(bar).pipe(baz);
// Instead of this
baz(bar(foo()));
// Write this
let text: String = reqwest::get("http://httpbin.org/get")
.await?
.json::<serde_json::Value>()
.await?
.pipe(toml::Value::try_from)?
.pipe(|x| toml::to_string(&x))?;
// Instead of this
let text: String = toml::to_string(&toml::Value::try_from(
reqwest::get("http://httpbin.org/get")
.await?
.json::<serde_json::Value>()
.await?,
)?)?;
查看更多示例,请参阅 测试。
另请参阅
大致相同的特性已在各种语言中实现或提出。
Rust
pipeline.rs
:作为宏实现- RFC #289:统一函数/方法调用语法
- RFC #2049:将数据管道传输到函数
- 方法级联和管道前向运算符提议
- Rust #44874:对
arbitrary_self_types
的跟踪问题
其他语言
- https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax
- Nim,DLang:内置 UFCS
- F#,Elixir:管道运算符
|>
- C++:提议