Size: a a a

2021 April 15

EG

Emmanuel Goldstein in rust_offtopic
Грубо говоря
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ну вот нужен пример конкретный
источник

EG

Emmanuel Goldstein in rust_offtopic
RawWaker это трейт обджект на стеке
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
а то я плохо понимаю что ребята из фтур делают и почему они не смогли оботйись без хаков
источник

EG

Emmanuel Goldstein in rust_offtopic
Они хранят vtable рядом с объектом, а не в указателе
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
мб нужно пропихнуть п ропозал по ослаблению обжект сейфти: например возможность указывать дин.трейтам лейаут или что-нибудь такое
источник

EG

Emmanuel Goldstein in rust_offtopic
Это позволяет им сохранять трейт обджект на стеке и возвращать его из функции
источник

EG

Emmanuel Goldstein in rust_offtopic
В этом разница
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
короче они обходят то что в сигнатуре клона Self а им нужно наебать систему типов и иметь Foo<Self> чтобы на стеке можно было держдать
источник

EG

Emmanuel Goldstein in rust_offtopic
Типа
Они таким образом выразили
trait Foobar {
   fn clone(&self) -> dyn Foobar;
}

благодаря тому, что размер этого их ад-хок dyn Foobar известен в компайл-тайме.
источник

EG

Emmanuel Goldstein in rust_offtopic
Принципиальная проблема, которая мешает им это сделать без хуйни, это отсутствие unsized_locals или ещё какого варианта на тему owned stack pointer.
источник

KR

Kai Ren in rust_offtopic
Карлуха всё может)
источник

AN

Alex Noname in rust_offtopic
кажется просто какая то херня уровня системы типов. Ведь никто не мешает в каждый интерфейс который нужно засунуть клон вручную. В чем смысл этого dyn_clone.
источник

AN

Alex Noname in rust_offtopic
В том что это видимо не выражается в текущем расте
источник

AN

Alex Noname in rust_offtopic
Нужно что то вроде trait MyTrait: BetterDynClone<Target=MyTrait>
источник

EG

Emmanuel Goldstein in rust_offtopic
Ещё раз, смысл в том, что он возвращает «трейт обджект» на стеке
источник

EG

Emmanuel Goldstein in rust_offtopic
Благодаря тому, что там C++-style трейт обджекты, которые носят vtable с собой
источник

EG

Emmanuel Goldstein in rust_offtopic
А не в указателе
источник

AN

Alex Noname in rust_offtopic
ты про футуры?
источник

AN

Alex Noname in rust_offtopic
про Wacker этот?
источник