17个稳定版本
1.12.1 | 2024年5月25日 |
---|---|
1.12.0 | 2024年3月27日 |
1.10.1 | 2022年10月21日 |
1.8.0 | 2021年3月21日 |
1.1.0 | 2018年7月24日 |
#62 在 数据结构
84,075 每月下载量
用于 129 个crate (43个直接使用)
150KB
3K SLoC
vec1
此crate提供了一个具有类型保证的rust std::vec::Vec
包装器,确保至少包含1个元素。如果您构建的API有时具有此类约束(例如,您需要至少一个目标服务器地址,但可以有更多),则非常有用。
示例
#[macro_use]
extern crate vec1;
use vec1::Vec1;
fn main() {
// vec1![] makes sure there is at least one element
// at compiler time
//let names = vec1! [ ];
let names = vec1! [ "Liz" ];
greet(names);
}
fn greet(names: Vec1<&str>) {
// methods like first/last which return a Option on Vec do
// directly return the value, we know it's possible
let first = names.first();
println!("hallo {}", first);
for name in names.iter().skip(1) {
println!(" who is also know as {}", name)
}
}
支持 serde::{Serialize, Deserialize}
Vec1
类型支持serde
的Serialize
和Deserialize
特征,但此功能仅在您的项目的Cargo.toml
文件中指定了"serde"
功能标志时启用
# Cargo.toml
[dependencies]
vec1 = { version = "...", features = ["serde"] }
像docs.rs一样构建文档
要构建包含所有功能和包含函数需要哪些功能的提示的文档,请使用以下命令
RUSTDOCFLAGS="--cfg docs" cargo +nightly doc --all-features
这将记录所有功能并启用仅夜间的不稳定doc_auto_cfg
功能。
许可
根据您的选择,受以下之一许可
- Apache许可证版本2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不附加任何其他条款或条件。
贡献者: ./CONTRIBUTORS.md
变更日志
依赖关系
~185KB