6 个版本 (1 个稳定版)
1.0.0 | 2023 年 5 月 26 日 |
---|---|
0.1.4 | 2023 年 5 月 26 日 |
#2412 in Rust 模式
每月 58 次下载
9KB
145 行
piping
piping
提供了一个 pipe!
宏,允许你在 Rust 中使用管道操作符。
let wrapped = orig_and_double(add(2, num)).1 as isize;
let piped = pipe! {
num |> add(2, __) |> orig_and_double(__),
(_, doubled) |> doubled as isize,
};
功能
- 类似黑客风格的语法。
- 一个语句中包含多个管道。
- 前一个管道结果的解构。
文档
文档可在 docs.rs 上找到。
它是如何工作的?
fn add(a: usize, b: usize) -> usize {
a + b
}
fn orig_and_double(num: usize) -> (usize, usize) {
(num, num * 2)
}
let num = 4;
let piped = pipe! {
num |> add(2, __) |> orig_and_double(__),
(_, doubled) |> doubled as isize,
};
// Expands to...
let piped = {
let __ = num;
let __ = add(2, __);
let (_, doubled) = orig_and_double(__);
doubled as isize
};
你可以传递任何表达式作为输入。
请注意,你可以通过 ,
连接管道以解构前一个管道的结果。
该宏还尝试优化生成的代码,以最小化重新赋值操作的次数。
依赖项
~275–730KB
~17K SLoC