Destructure, what is this?

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]);
}

Works just fine for me: Rust Playground

I can't open this link to see

Слушай, это же ты?

Слушай, это же ты?

Yep, that's me :slight_smile:

I can't open this link to see

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. То есть объявление происходит до цикла, а использование и добавление происходит внутри цикла.

Про это я не говорил выше, мой косяк. Но спасибо!

1 Like

Снова неполадки. В вектор значения не добавляются, а заменяются.
vec_word1.push(st1);
vec_word2.push(st2);

Снова неполадки. В вектор значения не добавляются, а заменяются.

Ну видимо ты вектор внутри цикла создаешь, как в коде выше?

Да, исправил, всё заработало, спасибо!