17 stable releases
1.12.1 | May 25, 2024 |
---|---|
1.12.0 | Mar 27, 2024 |
1.10.1 | Oct 21, 2022 |
1.8.0 | Mar 21, 2021 |
1.1.0 | Jul 24, 2018 |
#38 in Data structures
134,017 downloads per month
Used in 132 crates
(45 directly)
150KB
3K
SLoC
vec1
This crate provides a rust std::vec::Vec
wrapper with type
guarantees to contain at least 1 element. This is useful if
you build a API which sometimes has such constraints e.g. you
need at least one target server address but there can be more.
Example
#[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)
}
}
Support for serde::{Serialize, Deserialize}
The Vec1
type supports both of serde
's Serialize
and
Deserialize
traits, but this feature is only enabled when the "serde"
feature
flag is specified in your project's Cargo.toml
file:
# Cargo.toml
[dependencies]
vec1 = { version = "...", features = ["serde"] }
Building docs like on docs.rs
To build docs which document all features and contains hints which functions require which features use following command:
RUSTDOCFLAGS="--cfg docs" cargo +nightly doc --all-features
This will document all features and enable the unstable
nightly only doc_auto_cfg
feature.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Contributors: ./CONTRIBUTORS.md
Change Log
See ./CHANGELOG.md
Dependencies
~180KB