在 Rust 中使用 for 循环通过输入字符串初始化向量

Initialize vector through input string using for loop in Rust

 let mut input_player = String::new();
    let mut player_name = Vec::new();
    println!("Enter names of the player: ");

    for a in 1..(player_number+1){
        println!("Enter names of the player # {}: ", a);
        io::stdin()
        .read_line(&mut input_player)
        .expect("failed to read from stdin");

        player_name.push(input_player);

    } 

我在 for 循环 通过 输入字符串 初始化 Vector 时遇到问题

您在这里有 2 个误解。 首先,您尝试读入字符串而不先清除它。

假设第一个名字是 Foo,第二个名字是 Bar。 在第一个 read_line 之后,input_player 的值确实是 Foo。但是第二个 read_line 不会覆盖,它会追加。所以现在该值将是 FooBar,这可能不是您想要的。

第二个也是更重要的一点是,您在第一次循环迭代中将字符串交给了 vec。但是您正在尝试在第二次迭代中使用它。这涉及所有权领域,您可以阅读有关 here.

的更多信息

您需要的是为循环的每次迭代创建一个新字符串。所以在循环里面定义一个新的input_player.