Vladimir
тю ты
Vladimir
я думал то ответ
Vladimir
да, без бороуинга внутреннего, и без аргументов у генератора, как-то он слабо выглядит
Vladimir
Ну если генератор конвертнуть в итератор
Vladimir
там нет понятия completed
Vladimir
там может быть либо completed частью возвращаемых значений, когда return=yielded, или просто игнорится, но как и рыбку съесть и итераторы заюзать не очевидно
պլհկ
Yield = Some(T) Return = None ?
Vladimir
типа Yield = Return = Option?
Vladimir
или ты про маппинг
Vladimir
если второе, то тогда иттератор не будет реализован для части генераторов с не пустым ретурном
Vladimir
или просто будет упущен результат ретурна
Vladimir
Ну Completed возвращает значение
Berkus
thread 'main' panicked at 'called Result::unwrap() on an Err value: ParseIntError { kind: InvalidDigit }', src/libcore/result.rs:906:4 неплохо бы чтобы оно писало какое именно значение оно не смогло распарсить блин
Anonymous
в рантайме
Anonymous
лолол
Berkus
мнэ, ну в рантайме оно же знает какое значение там было, в чем тут лолол?
Sergey
в рантайме
логично же
Berkus
просто я ленивая жопа)
Alex
нужно еще unsafe {} засунуть
Anonymous
хмммм
Berkus
куда ж без него
Anonymous
а что если у значения unwrap нет Debug trait?
Cuno
просто я ленивая жопа)
Один из основных плюсов раста игнорируешь.
Cuno
не скомпилируется
Anonymous
норм
Cuno
https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap
Cuno
> where E: Debug
Cuno
компилируется - работает
Cuno
(если обрабатывать все ошибки)
Cuno
фейл на unwrap'е немногим лучше сегфолта
Loo
формула успеха
Berkus
фейл на unwrap'е немногим лучше сегфолта
когда мне нужно навалять прототип - отличная штука для отладки. ВОТ ТОЛЬКО бы она еще писала на чем фейлится бл
Loo
expect
Loo
юзай
Berkus
expect тоже не пишет на чем упало же
Loo
сам пиши в нём
Loo
лол
Berkus
мнэ, как это сделать?
Berkus
если в Err не передается эта информация в принципе
Alex
> ВОТ ТОЛЬКО бы она еще писала на чем фейлится бл Ну так убери там unwrap
Cuno
У тебя есть исходная строка
Berkus
> ВОТ ТОЛЬКО бы она еще писала на чем фейлится бл Ну так убери там unwrap
убрал, оно теперь Result<_, _> возвращает, как это мне помогло?
Alex
если unwrap сработал - значит там потенциально он будет срабатывать.
Berkus
ок, обрабатываю, в резулте пришел ParseError, дальше как понять НА ЧЕМ он пофейлился?
Cuno
Его можно матчить
Berkus
ParseIntError { kind: InvalidDigit }
Berkus
вот пришло такое
Berkus
как понять что ему не понравилось?
Alex
Ну если тебе прям нужно продебажить какое там число, то прям в том методе выводи исходные данные если Err
Berkus
ха
Alex
ха
тебе недостаточно того что у тебя невалидное число пришло?
Berkus
исходные данные я и так вижу, а пофейлилось оно НА ЧЕМ ИЗ ЭТИХ ДАННЫХ КОНКРЕТНО?
Berkus
покажи код
let load_actors = read_vector(&mut input_lines); let load_actors: HashMap<usize, String> = load_actors .iter() .map(|act| act.split(",")) .map(|mut split| (split.next().unwrap().parse(), String::from(split.next().unwrap()))) .collect(); println!("Actors to load: {:?}", load_actors);
Berkus
бля indid!
Sergey
все
Berkus
ОХУЕННО объяснил, спасибо гуру. а человеческими словами можно?
Alex
вообще, хороший кейс. Неочень удобно функциональщину дебажить
Sergey
бля
Alex
в динамических языках попроще
Sergey
ОХУЕННО объяснил, спасибо гуру. а человеческими словами можно?
матчишь, и принтишь исходный кусок в конкретном месте
Cuno
нормальная функциональщина не падает
Berkus
в динамических языках попроще
там ты даже не можешь сказать что тебе пришло )
Cuno
и ненуждается в дебаге