Telegram Group & Telegram Channel
🦀 Rust-задача: неожиданный вывод из-за владения и `for`


fn main() {
let data = vec!["rust", "go", "zig"];

for item in data {
println!("{item}");
}

println!("{:?}", data);
}


Что произойдёт при компиляции и запуске?

• a) Выведет rust, go, zig, затем ["rust", "go", "zig"]
• b) Ошибка компиляции: data уже перемещён
• c) Всё выведет корректно, потому что &str копируются
• d) Программа скомпилируется, но упадёт во время выполнения

💡 Разбор

for item in data в Rust перемещает `data`, потому что Vec<T> по умолчанию потребляется в IntoIterator. Это значит, что после цикла data больше не принадлежит функции main.

Попытка использовать data в println! после этого приведёт к ошибке компиляции: value borrowed after move.

**Правильный ответ: b) Ошибка компиляции: `data` уже перемещён**

🧠 **Вывод:** в Rust `for item in collection` по умолчанию вызывает `.into_iter()`, а не `.iter()`, и это **может забрать владение** коллекцией.

🔧 **Как избежать:**

Если нужно сохранить `data`, итерация должна быть по ссылке:


for item in &data {
println!("{item}");
}

println!("{:?}", data);


Теперь `data` не перемещается, и всё работает корректно.
👍438🔥3🥰1😁1



tg-me.com/rust_code/977
Create:
Last Update:

🦀 Rust-задача: неожиданный вывод из-за владения и `for`


fn main() {
let data = vec!["rust", "go", "zig"];

for item in data {
println!("{item}");
}

println!("{:?}", data);
}


Что произойдёт при компиляции и запуске?

• a) Выведет rust, go, zig, затем ["rust", "go", "zig"]
• b) Ошибка компиляции: data уже перемещён
• c) Всё выведет корректно, потому что &str копируются
• d) Программа скомпилируется, но упадёт во время выполнения

💡 Разбор

for item in data в Rust перемещает `data`, потому что Vec<T> по умолчанию потребляется в IntoIterator. Это значит, что после цикла data больше не принадлежит функции main.

Попытка использовать data в println! после этого приведёт к ошибке компиляции: value borrowed after move.

**Правильный ответ: b) Ошибка компиляции: `data` уже перемещён**

🧠 **Вывод:** в Rust `for item in collection` по умолчанию вызывает `.into_iter()`, а не `.iter()`, и это **может забрать владение** коллекцией.

🔧 **Как избежать:**

Если нужно сохранить `data`, итерация должна быть по ссылке:


for item in &data {
println!("{item}");
}

println!("{:?}", data);


Теперь `data` не перемещается, и всё работает корректно.

BY Rust


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/rust_code/977

View MORE
Open in Telegram


Rust Telegram | DID YOU KNOW?

Date: |

Newly uncovered hack campaign in Telegram

The campaign, which security firm Check Point has named Rampant Kitten, comprises two main components, one for Windows and the other for Android. Rampant Kitten’s objective is to steal Telegram messages, passwords, and two-factor authentication codes sent by SMS and then also take screenshots and record sounds within earshot of an infected phone, the researchers said in a post published on Friday.

If riding a bucking bronco is your idea of fun, you’re going to love what the stock market has in store. Consider this past week’s ride a preview.The week’s action didn’t look like much, if you didn’t know better. The Dow Jones Industrial Average rose 213.12 points or 0.6%, while the S&P 500 advanced 0.5%, and the Nasdaq Composite ended little changed.

Rust from sa


Telegram Rust
FROM USA