Так ли просто написать «Hello, World!» на языке Rust — про ссылки и разыменование
Сегодня столкнулся с интересной проблемой, которая показалась мне забавной. Простенькая задачка, что будет если добавить амперсанд к строке «Hello, World!». Собственно, давайте попробуем разобраться, что происходит когда мы делаем ссылку на «&str» тип. Посмотрите на код ниже, далее мы подробно разберем каждую строку.
|
1 2 3 4 5 6 7 8 9 10 11 |
fn main() { println!("{}", "Hello, World!"); println!("{}", &"Hello, World!"); println!("{}", &*"привет!"); println!("{}", &&*"Hello, World!"); println!("{}", &&&&"Hello, World!"); // error[E0614]: type `str` cannot be dereferenced // Но почему ошибка? Ответ кроется в том как создаются ссылки. println!("{}", &&&&**"Hello, World!"); println!("{}", &&&&****"Hello, World!"); } |
Разберём пошагово, что происходит в каждом вызове println! и почему возникает ошибка E0614.…



