Anonymous
для полиморфизма?
кана
А, ну гоферы-то неполноценные
Anonymous
если кодогенерация/интерфейсы то это не влияет на размер особо
Anonymous
Oleg
Ignat
պլհկ
Ignat
ну говорят, там каналы класс
Ignat
я офк не пробовал
Oleg
Я пробовал
Oleg
Они и в кложуре уже очень давно скопипастены. Го из беты выйти не успел
Ignat
ну в го хоть какие-то статические типы есть, в отличие от лиспов
պլհկ
В ракете даже зависимые типы есть, в отличие от раста
доня.
Ignat
чем они лучше?
Ignat
ну я действительно не знаком с лиспами, но во всех, о которых слышал, статических типов нет
кана
чем они лучше?
В обоих случаях ошибка будет в рантайме, но в лиспах придется меньше бойлерплейта для приведения писать. interface{} это действительно ужасно
Ignat
с этим не спорю
Ignat
но в ряде случаев можно скастить всё-таки к чему-то разумному
Ignat
наверное
Seva
Seva
#relevant
доня.
чем они лучше?
тем что протоколы позволяют по-человечески организовывать полиморфный код, а интерфейсы - это такой void* 2017 века
кана
кана
Если не использовать сам {}
доня.
бля, шо-то я затупил
имел ввиду interface {}
ну да, вообще одна хуйня
кана
Разница между протоколами в кложе интерфейсами в го вроде как только в том, что в го нет возможности указать, что такой-то тип имплементирует интерфейс, пишут костыли типа
var _ Interface = MyType{}
Alexander
здравствуйте, это канал о rust? у меня тут вопрос, как правильно огранизовывать match собирающий информацию из разных каналов и запускающий горутины пишущие туда
պլհկ
>запускающий горутины пишущие туда
Filipp
match Language { Rust => println!("Fine"), Go(code) => return rewrite_in_rust(code)}
Anonymous
не тайпчекается
Filipp
блин
Filipp
хотя должно
Vladimir
У тебя Раст как переменная биндится
Vladimir
А ленгвич вообще должен быть снейк кейс, если эт переменная
Alexander
не тайпчекается
даже если rewrite_in_rust( возвращает местный аналог ()?
Dårk
Filipp
Filipp
эта ветка имеет тип !
Alexander
у вас что expressions и statements отдельно живут?
Alexander
вот какой возвращает первая ветка?
Dårk
Anonymous
Alexander
а ок
Filipp
чем я занимаюсь?
https://play.rust-lang.org/?gist=55f32a2c4b6f75a17632c5cabfe5b04c&version=stable
Filipp
Anonymous
с каких пор ретурн это !
Loo
https://prnt.sc/h9s2jr
big
конечно return это !, он же управление не возвращает
big
иначе бы early return'ы из if/else с другим типом не работали бы
Anonymous
big
как это не описан
big
разве?
պլհկ
у break; какой тип?
Anonymous
м где
big
Anonymous
Anonymous
оно выражение просто для удобства
Anonymous
но типа не имеет
big
зачем делать специальный кейс для return'а? )
Anonymous
fn a() -> i32 { return 1 }
big
у break'а по сути нету такого. Он же в цикле обычно. Но вот у бесконечного loop'а без break'а должен быть тип тоже !
Anonymous
big
fn a() -> i32 { return 1 }
ага, тут него тоже !
big
почему нет то? )
big
! — это так называемый bottom type
big
и его можно впихнуть везде где требуется любой тип
Filipp
ты не можешь сделать return return
big
(потому что его и материализовать нельзя)
Anonymous
меня троллят
big
big
но наверное можно сделать return { return 1 }
big
Anonymous
заметь что нет ;
big
именно поэтому и можно использовать panic! без последующего return
Filipp