9个版本 (5个重大更新)
| 0.6.1 | 2022年11月16日 |
|---|---|
| 0.5.1 | 2022年11月16日 |
| 0.5.0 | 2021年11月28日 |
| 0.4.0 | 2021年3月29日 |
| 0.1.1 | 2019年10月24日 |
#10 在 无标准库
2,611,506 每月下载量
用于 3,459 个包 (7 个直接使用)
32KB
650 行
我开发了一系列对我有用的实用和便利的Rust模块,也可能对你有用。
该包是一系列相对独立的模块集合。我目前不提供独立禁用模块的功能,但它们的编译成本足够低,基本上可以忽略不计。
模块
bidi
这提供了一个扩展特质,用于 DoubleEndedIterator,包含一个方法,.bidi(cond: bool),根据运行时条件设置迭代器是否正向或反向操作。当条件为 true 时,正向迭代(使用 .next(), .nth())将转换为等效的逆向方法(.next_back(), .nth_back()))反之亦然;当条件为 false 时,迭代行为正常。
这仅在创建时检查条件;否则是无分支的。
exit
这是一个宏,调用 std::process::exit。它可以返回状态码,并可以向 stderr 打印消息。
use wyz::exit::exit;
exit!();
exit!(2);
exit!(3, "This is a {} message", "failure");
默认调用是 std::process::exit(1);调用可以提供自己的退出代码,并且还可以提供一组参数,直接传递给 eprintln!。错误消息不一定会被发出,因为在 exit! 时刻,标准错误输出(stderr)可能已被关闭。
fmt
Rust 使用 Debug 特征在标准库的多个部分中自动打印事件。此模块提供了包装类型,它们将它们的 Debug 实现转发到指定的其他格式化特征。它还实现了所有具有格式化特征实现类型的扩展方法,将它们包装在相应的包装类型中。
use wyz::fmt::FmtForward as _;
let val = 6;
let addr = &val as *const i32;
println!("{:?}", addr.fmt_pointer());
此代码片段使用 Debug 格式模板,但将打印 *const i32 的 Pointer 实现。
这对于将您的值放入仅使用 Debug 的错误处理框架中很有用,例如 fn main() -> Result 程序布局。
除了转发每个标量特征外,它还提供了一个 .fmt_list(),将任何类型 T where &T: IntoIterator 格式化为列表。列表格式化适配器本身实现了所有标量格式化特征,并且也可以将其包装在任何转发保护中,以便可以将其发送到 Debug 沉。
use wyz::fmt::FmtForward as _;
let seq = 0 .. 4;
assert_eq!(
format!("{:02b}", seq.fmt_list()),
"[00, 01, 10, 11]",
);
assert_eq!(
format!(
"{:?}",
seq
.map(|x| (x + 1) * 10)
.fmt_list()
.fmt_lower_hex(),
),
"[a, 14, 1e, 28]",
);
range
这为 RangeBounds 提供了一个扩展特征 RangeExt。它目前仅与 R: RangeBounds<usize> 一起使用,同样是因为它是 bitvec 的 MVP 而非独立项目。它将任意范围标准化为 Range 具体类型。欢迎提交 PR(Pull Requests)!
依赖关系
~49KB