#pipeline #pipe #operator #macro #proc-macro

piping

Rust 中的管道语法。 4isize |> double(__) |> __ as usize

6 个版本 (1 个稳定版)

1.0.0 2023 年 5 月 26 日
0.1.4 2023 年 5 月 26 日

#2412 in Rust 模式

Download history 3/week @ 2024-03-10 6/week @ 2024-03-31

每月 58 次下载

MIT 许可证

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