Size: a a a

2021 January 31

AI

Alex Ilizarov in rust_offtopic
Iv@n Dereviankin
А что там с Golang сейчас, им уже на рынке интересуються?
Ну так то хорошо себе живет в вебчике
источник

AI

Alex Ilizarov in rust_offtopic
На гошечке вполне можно работу найти уэе
источник

DS

Doge Shibu in rust_offtopic
Недоделанные экзистенциальные типы ещё легко вспомнить
источник

ID

Iv@n Dereviankin in rust_offtopic
Doge Shibu
Асинки вышли сильно раньше и сильно кривее чем должны были бы.

Адхок хак в виде ?/await? вместо нормального решения того или иного вида (аналог do/for/ce в хаскеле/скале/расте)

Очень долго нет GAT и специализации, которые во многих местах критичны для нормального дизайна трейтов.
Хм. Верю
источник

ID

Iv@n Dereviankin in rust_offtopic
Alex Ilizarov
Ну так то хорошо себе живет в вебчике
А с развитием? Кудой идут?
источник

DS

Doge Shibu in rust_offtopic
И вообще весь идиотский дизайн с неназываемыми типами для лямбд/генераторов/асинков
источник

ID

Iv@n Dereviankin in rust_offtopic
Я вот думаю, им бы мусоросборщик выкинуть, да компилятор до растовского дотянуть, и вышел бы практически Си, только чище и современный
источник

ID

Iv@n Dereviankin in rust_offtopic
Doge Shibu
И вообще весь идиотский дизайн с неназываемыми типами для лямбд/генераторов/асинков
Вот тут хз, о чем ты/Вы
источник

AI

Alex Ilizarov in rust_offtopic
Iv@n Dereviankin
А с развитием? Кудой идут?
Без понятия, я не гошник, просто вокруг меня попадаются оные
источник

AI

Alex Ilizarov in rust_offtopic
Вроде дженерики впиливают и что то еще
источник

DS

Doge Shibu in rust_offtopic
Iv@n Dereviankin
Вот тут хз, о чем ты/Вы
Проблема в том, что вне найтли раста не можешь нормально дать название типу, например, такого замыкания:

let my_value = ...;
let my_closure = |x: SomeType| my_value.some_method(...);
источник

DS

Doge Shibu in rust_offtopic
Без дин трейтов само собой
источник

ID

Iv@n Dereviankin in rust_offtopic
Alex Ilizarov
Вроде дженерики впиливают и что то еще
Как по мне и без дженериков норм, это ужо джавашные замашки
источник

DS

Doge Shibu in rust_offtopic
А подобная возможность по идее должна была бы быть изначально в языке, раз уж делали такой дизайн для замыканий
источник

ID

Iv@n Dereviankin in rust_offtopic
Doge Shibu
А подобная возможность по идее должна была бы быть изначально в языке, раз уж делали такой дизайн для замыканий
Понимаю. И часто такое используеться? (Наверное в асинк Раст да, но я больше по вебасму)
источник

ID

Iv@n Dereviankin in rust_offtopic
Iv@n Dereviankin
Понимаю. И часто такое используеться? (Наверное в асинк Раст да, но я больше по вебасму)
Вот кстати да, цель для компилятора сделать то сделали, а по факту без wasm-bindgen-а никуда
источник

ID

Iv@n Dereviankin in rust_offtopic
Iv@n Dereviankin
Вот кстати да, цель для компилятора сделать то сделали, а по факту без wasm-bindgen-а никуда
Могли б и допилить в стд, раз уж васм это тьер1 цель
источник

DS

Doge Shibu in rust_offtopic
Iv@n Dereviankin
Понимаю. И часто такое используеться? (Наверное в асинк Раст да, но я больше по вебасму)
Такая возможность была бы полезна практически везде.

Простейший пример - мы хотим из метода трейта возвращать итератор (абсолютно разумная и естественная идея):

trait MyTrait<'a> {
  type MyIter: Iterator<Item = &'a MyType>;
  fn get_iter(&'a self) -> Self::MyIter;
}


Ок, пишем реализацию:
impl<'a> MyTrait<'a> for MyTraitImpl {
  type MyIter = ???;
  fn get_iter(&'a self) -> Self::MyIter {
    let some_value = self.some_method(...);
    self.something.iter().map(|x| some_value.wtf(x))
  }
}

И теперь выходит, что мы не можем назвать тип, который должен идти в MyIter, из-за того, что у нас там будет Map<???, ...>, в котором надо будет указать имя типа замыкания, чего мы сделать не сможем. И соответственно так реализовать трейт тоже не сможем.

У нас остаются два варианта - бокс + dyn, что в случае итераторов смешно, или переходить на найтли и давать имя MyIter через
type MyIter = impl Iterator<...>; 


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

DS

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

ID

Iv@n Dereviankin in rust_offtopic
Doge Shibu
Такая возможность была бы полезна практически везде.

Простейший пример - мы хотим из метода трейта возвращать итератор (абсолютно разумная и естественная идея):

trait MyTrait<'a> {
  type MyIter: Iterator<Item = &'a MyType>;
  fn get_iter(&'a self) -> Self::MyIter;
}


Ок, пишем реализацию:
impl<'a> MyTrait<'a> for MyTraitImpl {
  type MyIter = ???;
  fn get_iter(&'a self) -> Self::MyIter {
    let some_value = self.some_method(...);
    self.something.iter().map(|x| some_value.wtf(x))
  }
}

И теперь выходит, что мы не можем назвать тип, который должен идти в MyIter, из-за того, что у нас там будет Map<???, ...>, в котором надо будет указать имя типа замыкания, чего мы сделать не сможем. И соответственно так реализовать трейт тоже не сможем.

У нас остаются два варианта - бокс + dyn, что в случае итераторов смешно, или переходить на найтли и давать имя MyIter через
type MyIter = impl Iterator<...>; 


И вот кажется, что раз уж разрабы выбрали такой дизайн для лямбд, то возможность как-то дать название типу замыкания должна была быть с самого начала.
Блин, и правда. А на гитхабе есть иссуе?
источник