Size: a a a

2021 July 31

ИК

Иван Кривошеев... in rannts
Такой же
источник

ИК

Иван Кривошеев... in rannts
Если хочется
источник

WS

Wire Snark in rannts
мне хочется от Раста, чтобы он гарантировал, что интерфейс реализован. Если я положу указатели на функции в структуру, кто мне гарантирует, что там всегда валидные они будут? Вдруг я где-то забуду положить их
источник

WS

Wire Snark in rannts
На Си это именно так и будет. Никто не гарантирует, если сам не проверишь) Но как бы от Си это ожидается
источник

A🌚

Al 🌚l in rannts
Для этого есть тесты)
источник

WS

Wire Snark in rannts
Так я не спорю, если это Си. Но от Раста я ожидаю, что он мне при компиляции сообщит, что я забыл что-то заимплементить в одном из кейсов
источник

ИК

Иван Кривошеев... in rannts
Так указатель на функцию - это тоже интерфейс
источник

WS

Wire Snark in rannts
Ну т.е. в обход трейтов делать интерфейсы на Расте — это наверно не идиоматический Раст все ж
источник

ИК

Иван Кривошеев... in rannts
Так функция - это тоже трейт
источник

ИК

Иван Кривошеев... in rannts
По сути
источник

WS

Wire Snark in rannts
Но никто не мешает ему быть нулевым при создании структуры...
источник

ИК

Иван Кривошеев... in rannts
В расте так не получится, можно сделать Option, но ты явно туда положишь тогда None
источник

ИК

Иван Кривошеев... in rannts
Поэтому помешает быть нулевым компилятор
источник

WS

Wire Snark in rannts
при инстанциировании структуры надо обязательно все поля передать, грубо говоря?
источник

ИК

Иван Кривошеев... in rannts
Да
источник

A🌚

Al 🌚l in rannts
А вообще какой-то странный случай) менять поведение объекта в зависимости от внешних условий кажется не совсем интуитивным поведением
источник

A🌚

Al 🌚l in rannts
Добавляет непредсказуемости в код
источник

SB

Sergey Belash in rannts
да, но ЕЩЕ проще: https://gobyexample.com/defer
источник

WS

Wire Snark in rannts
Так-то да. В Си по-другому просто нельзя иметь интерфейсы
источник

WS

Wire Snark in rannts
Фактически это вопрос о "static vs dynamic dispatch"
источник