AtCoder Beginner Contest 254 B

https://atcoder.jp/contests/abc254/tasks/abc254_b

    let mut b = Vec::with_capacity(a.len() + 1);
    b.set_len(a.len() + 1);

でVecのサイズを変えられそうですが、

error[E0133]: call to unsafe function is unsafe and requires unsafe function or block
  --> ABC254B.rs:22:2
   |
22 |     b.set_len(a.len() + 1);
   |     ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function

と怒られてしまいます。仕方がないのでpushでサイズを変えました。

// Practical Computing
#![allow(non_snake_case)]


//////////////////// library ////////////////////

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}

fn join<T: ToString>(v: &Vec<T>) -> String {
    v.iter().map(|x| x.to_string()).collect::<Vec<String>>().join(" ")
}


//////////////////// process ////////////////////

fn update(a: &Vec<i32>) -> Vec<i32> {
    let mut b = Vec::with_capacity(a.len() + 1);
    b.push(a[0]);
    for i in 1..(a.len()) {
        b.push(a[i-1] + a[i])
    }
    b.push(a[a.len()-1]);
    return b
}

fn main() {
    let N: usize = read();
    let mut a = vec![1];
    println!("{}", join(&a));
    for _ in 1..N {
        a = update(&a);
        println!("{}", join(&a))
    }
}