Денис
и чем это лучше , чем "123".parse().map_err(Into::into) ?
qthree
Тем же чем ? лучше чем try!()
Денис
ну нет
Денис
try! увеличивает вложенность, а ? — нет
Денис
но
Денис
несколько символов таки экономятся
qthree
в каждой функции связанной с utf8, fs, path и т.д. таких map_err(From::from) прихожится по 2-3 на функцию писать (по штуке на кложуру и итоговый)
Денис
ну сделай пропозал, почему нет :) только я бы назвал это err_into, а не err_from, и тогда уж надо делать и ok_into, для симметричности )
qthree
в итоге код состоит не из логики а из сплошных from и map
Денис
Денис
если ты ВСЕГДА конвертишь результат, значит ты что-то делаешь не так, не? :)
Andrey
а я так тоже делаю.
bla_bla().or_bad_request()?;
вообще для таких трейтов даже naming convention есть. их принято называть ResultExt, OptionExt...
qthree
Эм, потому что в одном случае Utf8Error, в другом IoResult, в третьем еще что то, а тебе нужен один тип ошибки?
Денис
Денис
он тебе нужен, когда у тебя внутри может произойти много всяких ошибок
Денис
и вот тогда надо конвертить, ибо другого варианта нет
qthree
Я про это тогда и говорю
Денис
ну ок
Денис
реально, сделай крейт, который расширяет Result
Денис
как @andy128k подсказывает
Денис
мини-крейтик
Денис
пропиарь его на реддите
Денис
если народ будет активно пользоваться — можно будет задуматься и о том, чтобы в STD добавить
qthree
Причем в failure есть ResultExt но там такого метода нет
Денис
ну заведи им ишшью, там же живые люди сидят
Денис
приведи им примеры, от которых у тебя горит
Денис
ваще мне кажется, что .map(Into::into) полностью укладывается в функциональную парадигму
Денис
так что такое утверждение я бы назвал слишком толстым)
Денис
в итоге код состоит не из логики а из сплошных from и map
qthree
для std и failure возможно лишнее, тем более если try-throw введут, а крейт запилю
qthree
и назову BetterThanTryThrow
Berkus
надо snake_case
qthree
bttt
Andrey
щас бы роботов слушать
Anton
qthree
Денис
што?
qthree
я думаю о fit_err, fit_error или match_err
Денис
ну, смотри сам
պլհկ
https://docs.rs/futures/0.1/futures/future/trait.Future.html#method.from_err
Anisyan
Sergey
Anisyan
спасибо
Денис
мне казалось кто-то недавно сталкивался с такой проблемой? https://play.rust-lang.org/?gist=1324c1dc8d5148e4bf95ba703328ef53&version=nightly&mode=debug
Денис
а, через индекс по-моему можно обойти
Денис
https://play.rust-lang.org/?gist=2c202496299c81edd372bd40bd810fbd&version=stable&mode=debug — но это пиздец конечно
Cat
Денис
у мапы есть entry, у вектора — нет
Cat
так ты же делаешь обёртку
Cat
короче забей, это я тут к названиям придираюсь
Денис
в смысле?)
Денис
я бы ваще заюзал мапу, но тип не имплементит ни ord, ни hash
qthree
qthree
unsafe можешь убрать, все равно компилятор двойную проверку границ выкинет
Денис
вот бы щас на оптимизацию понадеяться)
Мерль
даже в go компилятор такое делает
сейчас бы микрооптимизациями без бенчмарков в боевом окружении заниматься
Денис
то есть .get(n).unwrap() лучше, чем ансейф?
Денис
спасибо, не надо
Cat
Cat
ну т.е., как я понял,
value, ok := smth.get(i)
Cat
будет всегда возвращать X, false ?
Денис
да понятно, что может, и не просто может, а хачит) но если у меня есть выбор между "сделать так, чтобы наверняка" и "да rustc/llvm соптимизируют", и при этом первый вариант не требует от меня ровным счётом никаких усилий, то я выбираю его )
Anton
Слушайте народ, щас вопрос не холивара ради а из жизненной проблемы
Anton
https://github.com/rise-ui/rise-stylesheet/issues/1
Anton
(Если чо знаю описал тупо и коряво но все же)
Anton
суть в том что есть webrender builder который собирает узлы плоско в дерево
Anton
есть контекст style который делать push_stacking_context чтобы определить новый контейнер узел, и делает рисовку конкретного элемента, когда дерево вглубь заканчивается у элемента надо сделать pop_stacking_context() чтобы выйти в другой контекст отрисовки узла. И в итоге у меня проблема - за отрисовку отвечает одна структура, а закрытие контекста делается в итераторе на уровне самого rise в методе рекурсивном методе render. Хотел бы узнать моджно ли сделать это как нибудь красиво чтобы всем занимался именно Style контекст, включая закрытие области своей
Anton
по идее тут долджны быть какие нибудь алгоритмы на эту тему, но я с такой работой с данными еще не сталкивался, и даже не знаю что искать и поэтому здесь хочу спросить
Cat
Мерль
պլհկ
Cat
Денис
պլհկ
Хотя с ретурном вроде не ансейф 🤔