Size: a a a

2021 April 15

DS

Doge Shibu in rust_offtopic
В языке типа раста, где все дженерики спецализируются - ты не можешь выразить указатель на функцию, которая принимает какой-то дженерик тип и что-то с ним делает.
источник

AN

Alex Noname in rust_offtopic
во всяком случае в С++ аналогично. А где не так? в с#/Java?
источник

Z

Zaner in rust_offtopic
Такие же ограничения как и у vla vs массив в хипе
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну представь себе, что у тебя есть &dyn Clone и ты вызываешь на нём .clone()
источник

EG

Emmanuel Goldstein in rust_offtopic
Объект какого типа ты получишь?
источник

SP

Stanislav Popov in rust_offtopic
impl Clonned
источник

DS

Doge Shibu in rust_offtopic
Не так в тех языках где либо дженерики стираются (и есть универсальное представление для любого типа (в виде указателя обычно и это джава), либо где есть какой-то рантайм способ специализировать (C#)
источник

EG

Emmanuel Goldstein in rust_offtopic
Аналогично, представь себе, что у тебя есть
trait Foo {
   fn foo<T>();
}

объект &dyn Foo, и ты вызываешь foo.foo::<int>(). Где должна мономорфизироваться эта функция?
источник

Z

Zaner in rust_offtopic
а в памяти как хранить?
источник

ИЛ

Иван Лещенко... in rust_offtopic
impl точно нереально, ибо компилятор не знает типа
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
impl Clonned for Box<T>
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну так и сейчас можно.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ну короч нужен МРЕ на что они напоролись и почему сейф делать как они сделали. И если сейф то почему остальным нельзя
источник

EG

Emmanuel Goldstein in rust_offtopic
Трейт
trait Clone {
   fn clone(&self) -> Box<dyn Clone>;
}

вполне себе обджект сейф
источник

EG

Emmanuel Goldstein in rust_offtopic
А что MRE? Object safety это ограничение, собственно, процесса компиляции, а не безопасности. Компилятор не может узнать, как мономорфизировать вызов метода.
источник

AN

Alex Noname in rust_offtopic
trait Clone {
    type Out;
   fn clone(&self) -> Box<Out>;
}

почему не так
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
ну почему компилятор не может а ребята из футур внезапно могут?
источник

ИЛ

Иван Лещенко... in rust_offtopic
Это уже не клон
источник

ИЛ

Иван Лещенко... in rust_offtopic
К тому же, в случае с dyn нужно будет указать конкретный тип
источник

EG

Emmanuel Goldstein in rust_offtopic
Потому что ребята из футур делают не &dyn Clone, а &dyn СложнаяХуйня
источник