Size: a a a

2021 March 14

МП

Мимо Проходящий... in rust_offtopic
Αλεχ Zhukovsky
эт не очень круто
чего так? ну ругнётся конпилятор, не проблема же
источник

МП

Мимо Проходящий... in rust_offtopic
Αλεχ Zhukovsky
в дотнете регулярно проблема от того что все кому ни попадя тустринг реализуют например
блин, вроде не припомню такого. Но в голанге ты 100% можешь сделать всё что угодно fmt.Stringer, ни какой беды от этого точно не будет
источник

А

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

Z

Zaner in rust_offtopic
Алексей
это очень странная проблема если честно
Маркерные трейты(Send/Sync) нельзя реализовать
источник

А

Алексей in rust_offtopic
Αλεχ Zhukovsky
вторая проблема когда у тебя тип "случайно" реализует интерфейс который по логике ему не нужен
это какая-то "обратная утиная типизация": если что-то крякает как утка, плавает как утка и выглядит как утка, то возможно это не утка, а просто случайно так совпало
источник

А

Алексей in rust_offtopic
Zaner
Маркерные трейты(Send/Sync) нельзя реализовать
технически можно, но костыльно немного
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Алексей
в номинальной другая проблема: если скажем метод len есть у десятка вещей, но в отдельный трейт не вынесен, то полиморфно этот метод уже особо не вызовешь
в отличие от интерфейса трейт можно для чужих типов реализовывать
источник

А

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

ΑZ

Αλεχ Zhukovsky in rust_offtopic
это по сути главный козырь структурной типизации, но если ты можешь объявлять интерфейсы снаружди то он побит
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Алексей
в го можно
в го это и не интерфейс строго говоря
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
даже если он так называется
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Мимо Проходящий
чего так? ну ругнётся конпилятор, не проблема же
не ругнется во всех местах где юзается interface{}, мне кажется таких много бывает.

Хотя я на гошке дальше туторов не писал, так что могу ошибаться
источник

А

Алексей in rust_offtopic
Αλεχ Zhukovsky
в отличие от интерфейса трейт можно для чужих типов реализовывать
но в случае того же len руками/макросами придётся свои бойлерплейтные реализации делать
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Алексей
но в случае того же len руками/макросами придётся свои бойлерплейтные реализации делать
ну да, разве это большая проблема?

А бойлер убирается в макрос и делается 1 строкой
источник

А

Алексей in rust_offtopic
Αλεχ Zhukovsky
ну да, разве это большая проблема?

А бойлер убирается в макрос и делается 1 строкой
ну мне вот не доводилось такую проблему решать, но если у кого-то возникнет, то решение будет не очень красивым мягко говоря
источник

МП

Мимо Проходящий... in rust_offtopic
Αλεχ Zhukovsky
не ругнется во всех местах где юзается interface{}, мне кажется таких много бывает.

Хотя я на гошке дальше туторов не писал, так что могу ошибаться
Не, питонизмы это отдельная тема. В го а основном юзаются обычные типизированные интерфейсы, я про них говорил. Их то конпилятор чекает как надо
источник

(

( in rust_offtopic
Мимо Проходящий
чего так? ну ругнётся конпилятор, не проблема же
Не ругнется при даункастах i.(T), не ругнется если у вас либа или "библиотечный" модуль, потому что имплементирующие типы нигде не используются, а высовываются наружу

Короче, проблема переносится на самый поздний момент, когда тип уже должен использоваться как интерфейс
источник

А

Алексей in rust_offtopic
Мимо Проходящий
Не, питонизмы это отдельная тема. В го а основном юзаются обычные типизированные интерфейсы, я про них говорил. Их то конпилятор чекает как надо
Тут уже возникает проблема в том что в го нет дженериков. И если тебе захотелось вдруг не дай бог каких-нибудь нестандартных возможностей или нестандартных структур данных. то появляются питонизмы с пустыми интерфейсами
источник

А

Алексей in rust_offtopic
Алексей
Тут уже возникает проблема в том что в го нет дженериков. И если тебе захотелось вдруг не дай бог каких-нибудь нестандартных возможностей или нестандартных структур данных. то появляются питонизмы с пустыми интерфейсами
но это уже не связано со структурной типизацией
источник

SP

Stanislav Popov in rust_offtopic
мне нравится как откат в динамику ты называешь питонизмами
источник