Hello! I have a problev! I read a line from the console, and then add it up into a vector.
Compiler write this:
io::stdin().read_line(&mut st1).expect("Не удалось считать строку");
| ^^^ value used here after move
my code:
let mut st1 = String::new();
let mut st2 = String::new();
let mut vec_word1 = Vec::new();
let mur vec_word2 = Vec::new();
println!("Введите слово на русском: ");
io::stdin().read_line(&mut st1).expect("Не удалось считать строку");
if st1.trim() == ("045") {
break;
}
println!("Введите слово на английский: ");
io::stdin().read_line(&mut st2).expect("Не удалось считать строку");
if st2.trim() == ("045").to_string() {
break;
} else {
vec_word1.push(st1);
vec_word2.push(st2);
println!("{} = {}", vec_word1[0], vec_word2[1]);
}
Strange... Ok, here's the exact code that compiles:
use std::io;
fn main() {
loop {
let mut st1 = String::new();
let mut st2 = String::new();
let mut vec_word1 = Vec::new();
let mut vec_word2 = Vec::new();
println!("Введите слово на русском: ");
io::stdin().read_line(&mut st1).expect("Не удалось считать строку");
if st1.trim() == ("045") {
break;
}
println!("Введите слово на английский: ");
io::stdin().read_line(&mut st2).expect("Не удалось считать строку");
if st2.trim() == ("045").to_string() {
break;
} else {
vec_word1.push(st1);
vec_word2.push(st2);
println!("{} = {}", vec_word1[0], vec_word2[1]);
}
}
}
Буду писать на русском, мне так проще)
Я нашёл ошибку. Она состоит в том, что создание связей происходит до цикла loop. То есть объявление происходит до цикла, а использование и добавление происходит внутри цикла.