Сообщение Re[3]: Are we stack-efficient yet? от 19.11.2022 6:58
Изменено 19.11.2022 7:06 FR
Re[3]: Are we stack-efficient yet?
Здравствуйте, sergii.p, Вы писали:
SP>не понятно, что значит by-value. Вроде полная аналогия с С++ Также по-умолчанию производится копирование.
В расте же по умолчание перемещение:
SP>И только если не реализован трейт Copy производится перемещение.
Нужны трейты Clone и Copy и они не реализуются по умолчанию. То есть чтобы было копирование нужно специально озаботиться.
В С++ и copy и move есть по умолчанию, но могут работать не так как хотелось бы.
SP>К тому же в Rust перемещение более толковое кмк — объект вовсе исключается из рассмотрения. По нему после перемещения никаких действий не производится. В C++, наоборот, все перемещённые объекты надо ещё "удалить" (вызвать деструкторы) что в большинстве случаев — просто нагрев процессора.
Это да. Но в сабже и для раста недостаток найден, если многие функции принимают по значению, то будет такой же бестолковой нагрев из-за более частого копирования (перемещение в стеке сводится к копированию) стековой памяти.
SP>не понятно, что значит by-value. Вроде полная аналогия с С++ Также по-умолчанию производится копирование.
В расте же по умолчание перемещение:
#[derive(Debug)]
struct Tst(i32);
fn main() {
let a = Tst(123);
let b = a;
dbg!(a); // ошибка a переместился.
}SP>И только если не реализован трейт Copy производится перемещение.
Нужны трейты Clone и Copy и они не реализуются по умолчанию. То есть чтобы было копирование нужно специально озаботиться.
В С++ и copy и move есть по умолчанию, но могут работать не так как хотелось бы.
SP>К тому же в Rust перемещение более толковое кмк — объект вовсе исключается из рассмотрения. По нему после перемещения никаких действий не производится. В C++, наоборот, все перемещённые объекты надо ещё "удалить" (вызвать деструкторы) что в большинстве случаев — просто нагрев процессора.
Это да. Но в сабже и для раста недостаток найден, если многие функции принимают по значению, то будет такой же бестолковой нагрев из-за более частого копирования (перемещение в стеке сводится к копированию) стековой памяти.
Re[3]: Are we stack-efficient yet?
Здравствуйте, sergii.p, Вы писали:
SP>не понятно, что значит by-value. Вроде полная аналогия с С++ Также по-умолчанию производится копирование.
В расте же по умолчание перемещение:
SP>И только если не реализован трейт Copy производится перемещение.
Нужны трейты Clone и Copy и они не реализуются по умолчанию. То есть чтобы было копирование нужно специально озаботиться, за исключением примитивных встроенных типов.
В С++ и copy и move есть по умолчанию, но могут работать не так как хотелось бы.
SP>К тому же в Rust перемещение более толковое кмк — объект вовсе исключается из рассмотрения. По нему после перемещения никаких действий не производится. В C++, наоборот, все перемещённые объекты надо ещё "удалить" (вызвать деструкторы) что в большинстве случаев — просто нагрев процессора.
Это да. Но в сабже и для раста недостаток найден, если многие функции принимают по значению, то будет такой же бестолковой нагрев из-за более частого копирования (перемещение в стеке сводится к копированию) стековой памяти.
SP>не понятно, что значит by-value. Вроде полная аналогия с С++ Также по-умолчанию производится копирование.
В расте же по умолчание перемещение:
#[derive(Debug)]
struct Tst(i32);
fn main() {
let a = Tst(123);
let b = a;
dbg!(a); // ошибка a переместился.
}SP>И только если не реализован трейт Copy производится перемещение.
Нужны трейты Clone и Copy и они не реализуются по умолчанию. То есть чтобы было копирование нужно специально озаботиться, за исключением примитивных встроенных типов.
В С++ и copy и move есть по умолчанию, но могут работать не так как хотелось бы.
SP>К тому же в Rust перемещение более толковое кмк — объект вовсе исключается из рассмотрения. По нему после перемещения никаких действий не производится. В C++, наоборот, все перемещённые объекты надо ещё "удалить" (вызвать деструкторы) что в большинстве случаев — просто нагрев процессора.
Это да. Но в сабже и для раста недостаток найден, если многие функции принимают по значению, то будет такой же бестолковой нагрев из-за более частого копирования (перемещение в стеке сводится к копированию) стековой памяти.