История изменений
Исправление fsb4000, (текущая версия) :
Как компилятор должен действовать при виде такого:
void f(type&& t) { g(t); h(std::move(t)); }
Типа так:
fn f(mut t : SomeType)
{
g(& mut t); // это если g принимает параметр как t& в С++
h(t); // это std::move(t)
}
pub fn main() {
let a = SomeType{v: 0};
f(a);
}
В расте просто дефолты другие. Для move ничего писать не нужно, но для const& и просто& нужно писать: & и &mut соответсвенно.
Исправление fsb4000, :
Как компилятор должен действовать при виде такого:
void f(type&& t) { g(t); h(std::move(t)); }
Типа так:
fn f(mut t : SomeType)
{
g(& mut t); // это если g принимает параметр как t& в С++
h(t); // это std::move(t)
}
pub fn main() {
let a = SomeType{v: 0};
f(a);
}
В расте просто дефолты другие. Для move ничего писать не нужно, но для const& и просто& нужно писать: & и &mut соответсвенно.
Исходная версия fsb4000, :
Типа такого: Как компилятор должен действовать при виде такого:
void f(type&& t) { g(t); h(std::move(t)); }
fn f(mut t : SomeType)
{
g(& mut t); // это если g принимает параметр как t& в С++
h(t); // это std::move(t)
}
pub fn main() {
let a = SomeType{v: 0};
f(a);
}
В расте просто дефолты другие. Для move ничего писать не нужно, но для const& и просто& нужно писать: & и &mut соответсвенно.