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.
```rust
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}
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:
```toml
[dependencies] vec1 = { version = "...", features = ["serde"] } ```
To build docs which document all features and contains hints which functions require which features use following command:
sh
RUSTDOCFLAGS="--cfg docs" cargo +nightly doc --all-features
This will document all features and enable the unstable
nightly only doc_auto_cfg
feature.
Licensed under either of
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