Macro non_empty_vec::ne_vec[][src]

macro_rules! ne_vec {
    () => { ... };
    ($($x : expr), + $(,) ?) => { ... };
    ($elem : expr ; 0) => { ... };
    ($elem : expr ; $n : literal) => { ... };
    ($elem : expr ; $n : expr) => { ... };
}
Expand description

Constructs a NonEmpty vector, similar to std’s vec macro.

This macro will generally try to check the validity of the length at compile time if it can.

If the length is an expression (e.g. ne_vec![(); { 0 }]), the check is performed at runtime to allow the length to be dynamic.

Examples

Proper use.

assert_eq!(
    ne_vec![1, 2, 3],
    NonEmpty::try_from(vec![1, 2, 3_i32]).unwrap(),
);

assert_eq!(
    ne_vec![1; 3],
    NonEmpty::try_from(vec![1, 1, 1]).unwrap(),
);

Improper use.

let _ = ne_vec![];
let _ = ne_vec![1; 0];
let _ = ne_vec![1; 0usize];
let n = 0;
let _ = ne_vec![1; n];