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.
#[macro_use]externcrate vec1;use vec1::Vec1;fnmain(){// vec1![] makes sure there is at least one element// at compiler time//let names = vec1! [ ];let names = vec1!["Liz"];greet(names);}fngreet(names:Vec1<&str>){// methods like first/last which return a Option on Vec do// directly return the value, we know it's possiblelet first = names.first();println!("hallo {}", first);for name in names.iter().skip(1){println!(" who is also know as {}", name)}}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"] }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-featuresThis will document all features and enable the unstable
nightly only doc_auto_cfg feature.
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.
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
See ./CHANGELOG.md