Size: a a a

2020 August 12

CD

Constantine Drozdov in rust_offtopic
если совсем просто
источник

CD

Constantine Drozdov in rust_offtopic
соответственно перемещение - это когда ловишь
источник

SP

Stanislav Popov in rust_offtopic
ну на каком уровне это все обретает смысл? это намек для оптимизатора? или это то что генерится в рантайме?
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
ну на каком уровне это все обретает смысл? это намек для оптимизатора? или это то что генерится в рантайме?
Не, это только подразумеваемая семантика операции
источник

YS

Y S in rust_offtopic
Constantine Drozdov
если у тебя в выражении есть что-то безымянное и временное, ты получаешь его как T&&
Вот чего foreach циклы с ним быстее, чем с ссылками выходят
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
ну на каком уровне это все обретает смысл? это намек для оптимизатора? или это то что генерится в рантайме?
Грубо говоря, если тебе дают std::vector<int>&& ты берешь и вытаскиваешь из него кишки, ничего не аллокая
источник

SP

Stanislav Popov in rust_offtopic
Constantine Drozdov
Грубо говоря, если тебе дают std::vector<int>&& ты берешь и вытаскиваешь из него кишки, ничего не аллокая
всмысле мне его дают? аргументом функции? так я могу к нему обращаться и если мне его передали ссылкой, ничего не аллокая
источник

SP

Stanislav Popov in rust_offtopic
во пацаны согласны кек https://t.me/ebanatics_learn/36313
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
всмысле мне его дают? аргументом функции? так я могу к нему обращаться и если мне его передали ссылкой, ничего не аллокая
можешь, но если речь идёт о конструкторе, то std::vector(std::vector<int> &) должен будет аллокать новый буфер (поэтому копирование с const&, все равно менять плохо), а std::vector(std::vector<int>&&) - нет, он просто возьмет буфер из аргумента
источник

SP

Stanislav Popov in rust_offtopic
Constantine Drozdov
можешь, но если речь идёт о конструкторе, то std::vector(std::vector<int> &) должен будет аллокать новый буфер (поэтому копирование с const&, все равно менять плохо), а std::vector(std::vector<int>&&) - нет, он просто возьмет буфер из аргумента
ох блядь оно еще и как то контекстно-зависимо понимает что оно в конструкторе
источник

SP

Stanislav Popov in rust_offtopic
как же прекрасен раст
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
ох блядь оно еще и как то контекстно-зависимо понимает что оно в конструкторе
да нет, это просто семантика операции и ссылок
источник

CD

Constantine Drozdov in rust_offtopic
если тебе дали T& arg тебя ебёт что останется в arg, а если T&& arg тебя не ебёт
источник

SP

Stanislav Popov in rust_offtopic
вот ты обьясняешь одно, а понимаю я совсем другое из этого всего )

то что я понял - язык без линтипов где можно явно "отдать" и компилятор поймет. поэтому условно есть ссылка в caller и есть ссылка в callee, и мы их как бы свапаем подразумевая мув, но так как ссылка осталась приходится считать что на нее похер
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
вот ты обьясняешь одно, а понимаю я совсем другое из этого всего )

то что я понял - язык без линтипов где можно явно "отдать" и компилятор поймет. поэтому условно есть ссылка в caller и есть ссылка в callee, и мы их как бы свапаем подразумевая мув, но так как ссылка осталась приходится считать что на нее похер
На ссылку не похер, тут нет природной ссылочности. Ссылки не менялись вообще
источник

CD

Constantine Drozdov in rust_offtopic
я не знаю
дом Колотушкина
дом, который стоит на улице Пушкина, 14 (ссылка)
источник

Т8

Т-34 85 in rust_offtopic
Constantine Drozdov
ну да, не мог автор написать T() = default, писал T{}, оптимизатору не понравилось
интересно, это же можно отследить и оптимизировать, уравнивая эти возможности. Или нет?
источник

p

polunin.ai in rust_offtopic
Stanislav Popov
как же прекрасен раст
Хаха
источник

SP

Stanislav Popov in rust_offtopic
ну я подозреваю что ты начинаешь на каком то левеле работать не с обьектами а с описаниями обьектов и компилятор делает некоторую магию которая вообще не выражается в терминах "скопировал", "аллокнул на стеке в caller"
источник

CD

Constantine Drozdov in rust_offtopic
Stanislav Popov
ну я подозреваю что ты начинаешь на каком то левеле работать не с обьектами а с описаниями обьектов и компилятор делает некоторую магию которая вообще не выражается в терминах "скопировал", "аллокнул на стеке в caller"
компилятор никакой магии тут не делал, вообще
источник