Anonymous
Sherzod
у него рекурсия
Kerrigan
открой гитхаб
Sherzod
он спрашивает: что делать
Anonymous
и че
Sherzod
ему отвечают: увеличь лимит рекурсии
Anonymous
сложные функции с рекурсией в расте могут не работать
Sherzod
дальше нужно ОРАТЬ
Kerrigan
ну блин, либа которая может развалиться из-за того что у тебя лимит на рекурсию это как-то смешно
adam
Anonymous
Kerrigan
и на расте
Oleg
Догадываюсь, что для рекурсии там генерятся циклы со статически определённым количеством итераций
Oleg
Но макро-парсеры - это тот ещё хардкор. Если дизайн похожий на parboiled 2
Oleg
Они, естественно супер-быстрые, но ппц какие негибгие
պլհկ
Oleg
պլհկ
Из чего?
Oleg
Из "упростителей" проблемы с типами на полстраницы
պլհկ
Уже сейчас можно стирать через Box, но это не зерокост
Yaroslav
кстати, а hyper достаточно стабилен что бы писсать на нем свой бложег? (есть у меня такой пунктик, написать свой блог на http либе) ☺️
Oleg
Бокс, конечно, более универсальное решение
Oleg
Но вот я подумал про ту либу https://github.com/bluss/either
Oleg
Вот хорошо было бы, чтобы можно было делать бранчи, сравнительно с небольшим костом, но без бокса
Oleg
Т.е. как either, только автогенерящийся enum произвольной кратности и выводящий сам любой trait
Oleg
Нет таких RFC?
分解物質
分解物質
примеры
Loyd
Anonymous
Loyd
either не нужен
Oleg
ну представь ты пишешь себе такой код
fn foo_iter() -> impl MyTrai{
some match {
case1 => code1
case2 => code2
case3 => code 3
}
}
Sergey
Oleg
где code1 code2 code3 - разных типов
Oleg
очевидно, такой код не компилится
Loyd
лол
Что "лол"? Называйте нормально варианты енума
Loyd
А не мудацкие left-right
Oleg
нам нужно ручками писать enum
Loyd
Хуй потом проссышь что написано
Sergey
分解物質
Anonymous
Oleg
и зафигачивать туда нужные типы
Cuno
Sergey
Oleg
некоторые из которых, учитывая замыкания мы не можем даже записать
Loyd
ох блядь
https://hackage.haskell.org/package/base-4.9.1.0/docs/Data-Either.html
Loyd
матчасть учите
Sergey
Loyd
Если вы под either алгтд понимаете ­ — это ваши проблемы
Sergey
в rust есть Result
Oleg
вместо этого мы можем написать что-то вроде
fn foo_iter() -> impl MyTrait{
some match as MyTrait{
case1 => code1
case2 => code2
case3 => code 3
}
}
分解物質
Oleg
тоесть?
ну тип какой-нибудь Map<, >, где второй аргумент - лямбда
Loyd
А не хуй пойми какие left и right
分解物質
Loyd
Oleg
Anonymous
и нахуй это
分解物質
分解物質
Oleg
Anonymous
если у тебя есть причина делать возвращение для нескольких типов
Loyd
Loyd
Как дальше с этим работать предлагаешь?
Oleg
почему сразу такой код не написать?
ну хорошо у меня есть такой код
case mode{
true => xs.map(| x| x * 2)
false => xs.filter(|x| x > 10)
}
определите для него enum мне
Loyd
Если у тебя такие нужды, то динамический диспатчинг, имхо, в 99% случаях лучше.
Oleg
xs : Vec<uzise>
Oleg
Oleg
теоретически
Loyd
Anonymous
Loyd
Зачем менять абстракцию на... на что?
Oleg
Зачем?
чтобы зеро кост, только стэк и т.пю
Oleg
Anonymous
у тебя просто будет ошибка компиляции потому что у века нет таких методов