#通用 #通用型 #基本 #z85

wiwi

一个包含各种功能的库, Stuff™

12 个版本 (破坏性)

0.10.0 2024 年 8 月 11 日
0.9.0 2024 年 6 月 21 日
0.8.0 2024 年 6 月 16 日
0.5.3 2024 年 3 月 28 日

#184Rust 模式

Download history 4/week @ 2024-04-14 5/week @ 2024-04-21 31/week @ 2024-04-28 355/week @ 2024-05-19 6/week @ 2024-05-26 120/week @ 2024-06-02 13/week @ 2024-06-09 290/week @ 2024-06-16 21/week @ 2024-06-23 5/week @ 2024-06-30

1,432 每月下载量

MIT 许可证

650KB
16K SLoC

wiwi

一个(并不那么)小的库,包含各种实用工具和 Stuff™。包含一些有用的东西,也包含一些愚蠢的东西。包含很多东西!

wiwi 所有的功能都由功能标志控制,默认情况下没有任何一个被启用。

功能

在这些不同类型功能的描述之后,将有一个小节专门列出每个功能。

稳定功能是您可能期望的,它们被认为是完成的,遵循 semver。当然,这并不意味着不能添加功能,或者它不能被破坏(如果它被破坏,将会有破坏性的 semver 升级,遵循 semver)。

不稳定功能是任何程度完成的功能,可以随时破坏或消失。它们 遵循 semver。在成为稳定功能之前,不稳定功能的名字会附加 -unstable,当功能稳定时将删除。如果您正在使用不稳定功能,您可能想将版本锁定到确切版本(即 semver 中的 = 操作符,例如,在 Cargo.tomlwiwi = "=1.0.0")。

附加功能使某些功能中能够启用更多东西,包括 wiwi 和第三方 crate 之间的集成。它们将在适用的情况下启用功能,如果没有可影响的内容,将静默地不进行任何操作。

存在 all 功能来启用所有稳定功能,all-unstable 来启用所有不稳定(包括稳定)功能,以及 all-addons 来启用所有附加功能(但您很可能不想这样做!除非您真的在使用所有集成,否则这可能会并会导致依赖树膨胀)。

稳定功能

  • augment-panic-hook - 方便地增强 panic hook(而不是替换它),在调用现有的 panic hook 之前运行一些代码
  • clock-timer - 一个间隔跟踪时钟,在指定的间隔产生滴答声,并在指定的时间内这样做
  • debounce - 延迟调用一个函数,直到从上次调用以来已经过去了一段时间
  • export-all-submodules - 一个方便的宏,用于声明许多私有模块,然后使用 glob use 语句重新导出它们中的所有内容
  • h - h
  • hex - 支持大写和小写十六进制的快速十六进制编码和解码器
  • lazy-wrap - 懒加载值及其初始化函数的包装器,支持在静态变量中使用
  • nominal - 通用新类型包装器,通过Rust的命名类型系统提高类型安全性
  • rand - 更多的随机数生成器和实用工具
  • with-cloned - 方便的宏,用于实现克隆和移动模式(是的,我们就是这样叫它:p)
  • z85 - ZeroMQzZ85 格式的快速编码和解码器

附加功能

  • hashbrown - 在适用的地方添加与 hashbrown crate 的集成
  • image - 在适用的地方添加与 image crate 的集成
  • large-tuples - 默认情况下,元组的实现适用于最多8个元素的元组,这应该足够大多数使用。启用此功能将启用最多32个元素的元组的实现
  • nightly - 启用仅在nightly Rust中可用的功能
  • omega-tuples-of-doom - 当然,没有人会使用超过32个元素的元组...但我们不知道每个人的用例,因此此功能将启用最多128个元素的元组的实现。 希望,这足够用于所有情况。 :p
  • serde - 在适用的地方添加与 serde crate 的集成
  • serde-json - 在适用的地方添加与 serde-json crate 的集成

不稳定功能

提醒:不稳定功能不受semver保证!

  • aoc - 为编写 Advent of Code 解决方案而特定的实用工具
  • auth - 用于编写身份验证系统的底层(ish)实用工具,其中客户端密码永远不会通过网络发送
  • bitstream - 比特流编码和解码器
  • chainer - 常见结构的包装器,提供链式API(获取所有权,执行操作,然后返回)
  • cli - CLI参数解析器
  • defer - 延迟运行代码直到当前作用域的末尾或直到某个东西被丢弃
  • id - 各种输出大小和唯一性及排序保证的ID生成器
  • int - 大整数(例如u384)和不规则大小的整数(例如u15)
  • iter - 迭代器实用工具
  • lsl - 用于编写Second Life脚本的实验性lib...因为是的,我很快就厌倦了它,并立即想念Rust lol
  • mcu - Material颜色实用工具
  • memory-usage - 计算Rust结构体的实际内存使用情况,包括自定义类型的 derive 宏(与 size_of::() 不同)
  • minesweeper - 任意大小的扫雷游戏的核心逻辑组件
  • num-traits - 为数字及其各种功能提供更多特性,包括如 MulWidening 等功能
  • path - 从头开始编写的仅支持UTF-8的路径操作工具
  • serialiser-binary - 自描述且稳定的二进制格式/序列化器,旨在输出体积小
  • serialiser-binary-2 - 自描述且稳定的二进制格式/序列化器,旨在输出体积小(v2)
  • serialiser-text - 自描述且稳定的文本格式/序列化器,旨在便于手工阅读和编写
  • string-pool - 全局不可变字符串池和String类型(类似于Java)
  • sudoku - 与数独相关的...内容
  • unicode - Unicode标准实现,包括UTF-8、UTF-16和UTF-32字符串

平台支持

此crate将仅正式支持macOS和Linux。Windows支持将仅在最大努力的基础上进行。这并不意味着我不想支持Windows!只是我在Unix平台上的能力将会较小。尽管如此,仍然可以提交问题,如果您愿意的话,也可以向我提交PR!

依赖关系

~0.3–12MB
~123K SLoC