Size: a a a

2021 January 25

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
А что делать, перемещать?
да
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
я уже понял что без std::move нихуя не перемещается
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
но я этого не ожидал
источник

CD

Constantine Drozdov in rust_offtopic
А инты тоже перемещать?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
А инты тоже перемещать?
инты копи-типы, их всегда копировать
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
я уже понял что без std::move нихуя не перемещается
а один знакомый после плюсов охуевал, что у него Rust переменные пиздит
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
а один знакомый после плюсов охуевал, что у него Rust переменные пиздит
лол)
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
собственно надо и конструктор копирования определять и оператор присваивания
потому что это разные вещи, а в Rust может быть и семантически одинаковые (по крайней мере, я не видел реализации ни одного случая нетривиальной релокации в Rust)
источник

А

Алексей in rust_offtopic
Constantine Drozdov
потому что это разные вещи, а в Rust может быть и семантически одинаковые (по крайней мере, я не видел реализации ни одного случая нетривиальной релокации в Rust)
ну в крестах да
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
потому что это разные вещи, а в Rust может быть и семантически одинаковые (по крайней мере, я не видел реализации ни одного случая нетривиальной релокации в Rust)
в этом и прелесть, что за a = b не может скрываться сложной логики, аллокаций и т.п. И это прекрасно
источник

V

Vetro in rust_offtopic
Constantine Drozdov
а один знакомый после плюсов охуевал, что у него Rust переменные пиздит
Ору
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
в этом и прелесть, что за a = b не может скрываться сложной логики, аллокаций и т.п. И это прекрасно
ну вот что за это не умеем
1. Class contains pointer to self (пример с SSO string без ветвления в доступе по индексу)
2. Allocated memory contains pointer to self (двусвязный список с элементом-заглушкой, которая не аллоцируется)
3. Class invariant depends on this (offset_ptr, хранится смещение относительно this)
4. Program invariant depends on this (объекты регистрируются)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
ну вот что за это не умеем
1. Class contains pointer to self (пример с SSO string без ветвления в доступе по индексу)
2. Allocated memory contains pointer to self (двусвязный список с элементом-заглушкой, которая не аллоцируется)
3. Class invariant depends on this (offset_ptr, хранится смещение относительно this)
4. Program invariant depends on this (объекты регистрируются)
1. не работате не по этому, а потому что алиасинг
2. незнаю зачем может быть нужно. Двусвязный список в расте есть, по реализации в нем все логично, зачем нужны заглушки - незивестно.
3. храни оффсет в isize, что мешает*
4. тоже хз что это
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
1. не работате не по этому, а потому что алиасинг
2. незнаю зачем может быть нужно. Двусвязный список в расте есть, по реализации в нем все логично, зачем нужны заглушки - незивестно.
3. храни оффсет в isize, что мешает*
4. тоже хз что это
1. Алиасинг уменьшает семантическое множество
2. Заполнить next/prev всегда и не иметь nullptr в косвенной форме, сохраняя отсутствие аллокации в конструкторе
3. Относительно this - его изменение должно вызвать перерасчёт
4. Вопрос что такое регистрировать все созданные объекты?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
1. Алиасинг уменьшает семантическое множество
2. Заполнить next/prev всегда и не иметь nullptr в косвенной форме, сохраняя отсутствие аллокации в конструкторе
3. Относительно this - его изменение должно вызвать перерасчёт
4. Вопрос что такое регистрировать все созданные объекты?
Предъявлять расту за отсутствие алиасингу все равно что джаве предъявлять за недетерминированную очистку
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
каким образом ты экономишь аллокации в конструкторе тоже непонятно. Вместо

a = b

Всегда можно написать

make_magic(a,b)

и сделать там любую нужную логику
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
Предъявлять расту за отсутствие алиасингу все равно что джаве предъявлять за недетерминированную очистку
Я и не предъявляю, говорю, что вот такое последствие
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Constantine Drozdov
Я и не предъявляю, говорю, что вот такое последствие
ну может я плохо плюсы знаю но преимуществ я не увидел
источник

CD

Constantine Drozdov in rust_offtopic
Αλεχ Zhukovsky
каким образом ты экономишь аллокации в конструкторе тоже непонятно. Вместо

a = b

Всегда можно написать

make_magic(a,b)

и сделать там любую нужную логику
ты про 3?
struct node {
  node * next; //not null
  node * prev; //not null
};
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
скорее невозмжность некоторых привычных плюсовых хаков
источник