Size: a a a

2021 April 28

TK

Traveller Kolsky in rust_offtopic
И энумы ещё
источник

CD

Constantine Drozdov in rust_offtopic
Заворачиваемый может не предоставлять интерфейс проверки на null потому что никогда не null
источник

TK

Traveller Kolsky in rust_offtopic
Не заворачивай ничем, кроме Api NullableFn с проверкой, иначе ты нарушаешь инвариант типа и инкапсуляция перестаёт работать
источник

CD

Constantine Drozdov in rust_offtopic
Да, ADT отлично заменяют наследование (вообще-то ADT не может расширен извне определения)
источник

r

red75prime in rust_offtopic
Э... То есть проблема в том, что мы зачем-то пытаемся обернуть null в ненуллабельный тип? А зачем?
источник

CD

Constantine Drozdov in rust_offtopic
Нет, смотри. Создание NullableFn<void()> должно запросить IsNull у заворачиваемого объекта, но заворачиваемый объект может не иметь такой проверки вообще
источник

CD

Constantine Drozdov in rust_offtopic
Представь, что ты Fn в NullableFn кладешь
источник

r

red75prime in rust_offtopic
Ну значит там не может быть null. Не понимаю как это связано с "Потому что внутри not null лежит null"
источник

CD

Constantine Drozdov in rust_offtopic
То есть создание NullableFn не может проверять аргумент на null, потому что аргумент может не поддерживать это
источник

r

red75prime in rust_offtopic
Нуллабельный тип, который нельзя проверить на нуллабельность? Ну его нафиг это ООП, уйду в функциональщину.
источник

CD

Constantine Drozdov in rust_offtopic
Ну тебе, видимо, завтипы нужны, чтобы подсовывать операции под зависимость вместо dyn Hueta
источник

TK

Traveller Kolsky in rust_offtopic
Нуллабельность может существовать только у указателей. Если необходимо определять свои указатели, то для них существует CoerceUnsized для преобразования в сырые. Более общий способ определения, нерабочий - impl IsNull, в котором нужно уметь вернуть bool.
источник

[

[BRM]White Rabbit in rust_offtopic
Кстати, про ADT. Это тип-сумма что ли?
источник

CD

Constantine Drozdov in rust_offtopic
Да
источник

[

[BRM]White Rabbit 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
А перепутать енум и интерфейс это вообще кайфовый способ рефакторить потом миллион лет
источник

TK

Traveller Kolsky in rust_offtopic
Я не знаю, как ты умудришься их перепутать
источник