Size: a a a

2020 August 04

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
если я правильно понимаю то это просто Clone конструктор. В расте есть просто отдельный трейт и нет нужды делать костыли
это аналог, но может и как copy себя вести при определённых обстоятельствах. А в чём костыльность?
источник

AZ

Alex Zhukovsky in rust_offtopic
Vetro
если ты не собираешься программировать на плюсах - то незачем
ну просто выглядит как плохой легаси подход, а человек страдает типа "ну вот в рсте нет("
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
вопрос зачем это учить если растовый способ намного проще
вопрос почему ты постоянно с танком говорите о плюсах когда единственный кто в них шарит это царь, лол
источник

V

Vetro in rust_offtopic
не только
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
это аналог, но может и как copy себя вести при определённых обстоятельствах. А в чём костыльность?
он не может вести себя при обстоятельствах. Это ответ на простой вопрос : "можно ли тип побитово копировать или нет".

А дальше в зависимости от обстоятельств либо будет этим система пользоваться, либо нет
источник

V

Vetro in rust_offtopic
здесь еще есть люди которые пол жизни на плюсах провели
источник

V

Vetro in rust_offtopic
если не больше
источник

AZ

Alex Zhukovsky in rust_offtopic
если ты напишешь let y = x на копи типе но дальше не будешь пользоваться x то у тебя произойдет мув и копии не будет
источник

Т8

Т-34 85 in rust_offtopic
polunin.ai
во всех ГЦ языках семантика копирования
не во всём. Референсные типы шэрятся
источник

V

Vetro in rust_offtopic
Т-34 85
не во всём. Референсные типы шэрятся
ну так копи указателя все равно ж
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
потому что КОНСТРУКТОр копирования подразумевает что при его вызове запускается пользовательский код который должен произвести копирование
но в плюсах нет строгого регламента, что должно считаться копированием. Как сделаешь, так и будет
источник

V

Vetro in rust_offtopic
я думаю он это и подразумевал
источник

AZ

Alex Zhukovsky in rust_offtopic
Т-34 85
но в плюсах нет строгого регламента, что должно считаться копированием. Как сделаешь, так и будет
ну а в расте есть, когда ты пишешь let x = y раст пытается смувать. Если смувать нельзя, но тип реализует копи, то он вставляет копирование. Если же копи нет то выдает ошибку "не могу смувать"
источник

AZ

Alex Zhukovsky in rust_offtopic
очень простая схема, и главное надежная
источник

AZ

Alex Zhukovsky in rust_offtopic
скажи, какие преимущества у плюсовой схемы получаются?
источник

Т8

Т-34 85 in rust_offtopic
polunin.ai
ну вот
Foo x = y;
может быть имплисинтным
Foo x = new Foo(y);
new создаёт объёкт в хипе и возвращает указатель. Если хочешь на стеке, то тогда просто Foo(y) (или Foo{y}). Но именно так будет временный объект и поэтому язык попытается замувить (r-value)
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
и я не хочу думать что за магия за "=" скрывается
не магия, а тип переменной. Если ты l-value ссылку хуяришь или значение, то будет копирование, если r-value, то мув. Но вообще, это оператор присваивания, а конструктор при объявлении срабатывает. Если ты это делаешь рядом, то компилятор оптимизирует, конечно
источник

BD

Berkus Decker in rust_offtopic
Alex Zhukovsky
А копирующий конструктор вызывает кастомную логику или просто побитово копирует структуру?
он делает то что ты в нем написал
источник

BD

Berkus Decker in rust_offtopic
Alex Zhukovsky
потому что КОНСТРУКТОр копирования подразумевает что при его вызове запускается пользовательский код который должен произвести копирование
так и есть. но можно сказать что у него дефолтная реализация. которая как раз таки побитовое копирование
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
в плюсах? Вполне возможно
ну посмотри, что такое y, делов-то
источник