Я делаю Rust Koans
и я застрял на этом вопросе:
#[test]
fn for_loops_two() {
let words: [&'static str; 3] = ["I", "love", "Rust"];
let space: &str = " ";
let mut sentence: String = String::new();
for word in words.iter() {
// __
}
println!("{:?}", sentence);
assert!(sentence == "I love Rust".to_string());
}
Я знаю, что мне нужно объединить строку, но это не удастся:
#[test]
fn for_loops_two() {
let words: [&'static str; 3] = ["I", "love", "Rust"];
let mut sentence: String = String::new();
for word in words.iter() {
sentence.push_str(word);
}
println!("{:?}", sentence); // "ILoveRust"
assert!(sentence == "I love Rust".to_string());
}
Я могу добавить пробел после каждой итерации:
#[test]
fn for_loops_two() {
let words: [&'static str; 3] = ["I", "love", "Rust"];
let space: &str = " ";
let mut sentence: String = String::new();
for word in words.iter() {
sentence.push_str(word);
sentence.push_str(space);
}
println!("{:?}", sentence); // "I Love Rust "
assert!(sentence == "I love Rust".to_string());
}
Это также не удастся, потому что последняя итерация добавит пробел.
Полагаю, я мог бы написать условное выражение, если мы находимся на последней итерации, но я пытаюсь получить правильный синтаксис. Более того, я чувствую, что для всего этого есть гораздо лучшее решение, и я просто не могу понять синтаксис.
Как сделать вышеупомянутое утверждение с условием в цикле, чтобы не добавить пробел на последней итерации?