На веб-сайте языка Rust утверждается, что семантика перемещения является одной из особенностей языка. Но я не вижу, как семантика перемещения реализована в Rust.
Ящики для ржавчины - единственное место, где используется семантика перемещения.
let x = Box::new(5);
let y: Box<i32> = x; // x is 'moved'
Приведенный выше код Rust можно записать в C++ как
auto x = std::make_unique<int>();
auto y = std::move(x); // Note the explicit move
Насколько я знаю (поправьте меня, если я ошибаюсь),
- В Rust вообще нет конструкторов, не говоря уже о том, чтобы перемещать конструкторы.
- Нет поддержки для ссылок rvalue.
- Нет способа создавать перегрузки функций с параметрами rvalue.
Как Rust обеспечивает семантику перемещения?