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