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无标准库

Download history 606846/week @ 2024-03-14 604719/week @ 2024-03-21 582993/week @ 2024-03-28 618161/week @ 2024-04-04 621962/week @ 2024-04-11 606331/week @ 2024-04-18 555357/week @ 2024-04-25 553682/week @ 2024-05-02 559433/week @ 2024-05-09 571756/week @ 2024-05-16 556664/week @ 2024-05-23 643220/week @ 2024-05-30 631901/week @ 2024-06-06 637607/week @ 2024-06-13 666765/week @ 2024-06-20 549438/week @ 2024-06-27

2,611,506 每月下载量
用于 3,459 个包 (7 个直接使用)

MIT 许可证

32KB
650

wyz

myrrlyn的wyzyrdly库

Latest Version MSRV License

Documentation Crate Downloads

我开发了一系列对我有用的实用和便利的Rust模块,也可能对你有用。

该包是一系列相对独立的模块集合。我目前不提供独立禁用模块的功能,但它们的编译成本足够低,基本上可以忽略不计。

模块

  1. bidi
  2. exit
  3. fmt
  4. range

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 i32Pointer 实现。

这对于将您的值放入仅使用 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