История изменений
Исправление DarkEld3r, (текущая версия) :
А вот как ты сделаешь такое:
В расте нет перегрузки функций. Но вообще пример слишком искусственный и «странный», правильно оно будет вот так:
fn append(a: &mut String, b: char)
{
a.push(b);
}
fn append_copy(a: &str, b: char) -> String {
let mut res = a.to_string();
res.push(b);
res
}
Это скорее аналог RVO
Нет. Вот это, по твоему, RVO?
let a = vec![1, 2, 3];
let b = a; // move
let c = b; // move
Исходная версия DarkEld3r, :
А вот как ты сделаешь такое:
В расте нет перегрузки функций. Но вообще пример слишком искусственный и «странный», правильно оно будет вот так:
fn append(a: &mut String, b: char)
{
a.push(b);
}
fn append_copy(a: &String, b: char) -> String {
let mut res = a.clone();
res.push(b);
res
}
Это скорее аналог RVO
Нет. Вот это, по твоему, RVO?
let a = vec![1, 2, 3];
let b = a; // move
let c = b; // move