#slice #non-empty #non-zero #vector #no-std #package

no-std not_empty

静态保证不为空的切片和向量

4个版本

0.1.3 2022年9月22日
0.1.2 2022年9月22日
0.1.1 2022年9月22日
0.1.0 2022年9月22日

#2376 in Rust模式

Download history 100/week @ 2024-03-13 89/week @ 2024-03-20 122/week @ 2024-03-27 321/week @ 2024-04-03 108/week @ 2024-04-10 185/week @ 2024-04-17 150/week @ 2024-04-24 326/week @ 2024-05-01 45/week @ 2024-05-08 75/week @ 2024-05-15 186/week @ 2024-05-22 182/week @ 2024-05-29 112/week @ 2024-06-05 317/week @ 2024-06-12 244/week @ 2024-06-19 165/week @ 2024-06-26

858 每月下载量

MIT/Apache

105KB
1.5K SLoC

not_empty

静态保证不为空的切片和向量。

Build Status Latest Version

此crate特别适用于各种切片或向量的操作,这些操作现在返回值而没有性能损失。

使用方法

此crate位于crates.io,您可以通过将not_empty添加到项目Cargo.toml中的依赖项来使用它。

[dependencies]
not_empty = "0.1"

文档

docs.rs上查看完整参考这里

功能

  • alloc通过alloc crate启用分配类型的使用。
  • serde通过serde crate启用对任何not_empty类型的序列化和反序列化。
  • std启用标准库的使用。

注意:如果同时启用了allocstd功能,则会抛出编译器错误。只能选择其中一个。

默认情况下,只启用了std功能。

动机

有其他包解决了这个问题。在寻找自己的解决方案时,我主要遇到了两个其他包

  • nonempty只支持向量,并且没有优雅地处理迭代器的解决方案。此外,其导出的NonEmpty类型与其他切片或向量之间的互操作性在架构支持方面还有很多不足。为了严格起见,我对NonEmpty类型比标准向量对于非零大小类型更大的事实感到厌烦。
  • non-empty-vec没有扩大类型,这很好,但它也没有满足我的互操作性需求。

许可

根据以下任一许可授权:

由你选择。

贡献

除非你明确声明,否则根据Apache-2.0许可证定义,你有意提交以包含在工作中的任何贡献,将按上述方式双授权,不附加任何额外条款或条件。

依赖

约170KB