Size: a a a

2021 April 28

TK

Traveller Kolsky in rust_offtopic
Не является
источник

TK

Traveller Kolsky in rust_offtopic
Касты между дин трейтами он не даст
источник

TK

Traveller Kolsky in rust_offtopic
Только вручную
источник

CD

Constantine Drozdov in rust_offtopic
Потому что авторы ниасилили, да
источник

TK

Traveller Kolsky in rust_offtopic
Потому что нет наследования, которое не упёрлось, и получилось гораздо сложнее, такой вот трейдофф
источник

CD

Constantine Drozdov in rust_offtopic
Наследование есть, в момент оборачивания
источник

TK

Traveller Kolsky in rust_offtopic
Остальные два принципа никуда не делось
источник

TK

Traveller Kolsky in rust_offtopic
Ты максимум можешь конкретный тип забоксить и стереть информацию о типе, это не наследование
источник

CD

Constantine Drozdov in rust_offtopic
Это называется TypeErasure, и заворачивание объекта в dyn Trait это 146% создание промежуточного наследующего объекта
источник

CD

Constantine Drozdov in rust_offtopic
При этом отсутствие иерархии создаёт крайне неприятные патологии
источник

TK

Traveller Kolsky in rust_offtopic
Наследоваться должно ещё и поведение
источник

TK

Traveller Kolsky in rust_offtopic
А тут его нет
источник

TK

Traveller Kolsky in rust_offtopic
Иерархия не ставит на первое место данные, она ставит на первое место код
источник

TK

Traveller Kolsky in rust_offtopic
И вот оттуда уже идут неприятные патологии
источник

CD

Constantine Drozdov in rust_offtopic
Иерархия позволяет не сосать бибу, когда NullableFn<int()> заворачивается в NullableFn<void()> как вызываемый объект, после чего проверка на null просто не работает
источник

CD

Constantine Drozdov in rust_offtopic
Потому что внутри not null лежит null
источник

TK

Traveller Kolsky in rust_offtopic
Для этого есть другие решения
источник

CD

Constantine Drozdov in rust_offtopic
Да, определять отдельную операцию для заворачивания NullableFn внутри NullableFn и проебать расширяемость
источник

TK

Traveller Kolsky in rust_offtopic
Трейты позволяют избежать большинство случаев, когда тебе ниибацо как нужно иметь дин диспатч
источник

r

red75prime in rust_offtopic
В смысле если перед оборачиванием не проверить оборачиваемое на null?
источник