Conditional Array initialization

Viewed 55

Can I conditionally provide an initialization for a vector or no initialization at all?

fn main() {
    let b = true;
    let a = vec![
        if b {"b"} //error[E0317]: `if` may be missing an `else` clause
    ];
    println!("{:?}", a);
}
2 Answers

The vec! macro doesn't support this, but you can use normal functions on Vec:

fn main() {
    let b = true;
    let mut a = Vec::new();
    if b {
        a.push("b");
    }
    println!("{:?}", a);
}

playground

You can do this:

let my_vec = if condition {
   vec!["b"]
}
else{
   vec![]
};

Another option is late initialization:

let my_vec: Vec<&str>;

if condition{
   my_vec = vec![];
}
else{
   my_vec = vec!["b"];
}
Related