Size: a a a

2020 December 04

АК

Александр Караев... in Rust Beginners
red75prime
let result: Result<Vec<_>, _> = iter.collect();
мне не нужен промежуточный вектор, я планирую дальше навесить ещё .map() в случае, если нет ошибок.
примерно так: v.into_iter().map(f).magic_function()?.map(...)...
источник

r

red75prime in Rust Beginners
Александр Караев
мне не нужен промежуточный вектор, я планирую дальше навесить ещё .map() в случае, если нет ошибок.
примерно так: v.into_iter().map(f).magic_function()?.map(...)...
а. .filter_map(Result::ok)
источник

r

red75prime in Rust Beginners
Так, я опять не понял похоже.
источник

АК

Александр Караев... in Rust Beginners
red75prime
а. .filter_map(Result::ok)
не то, мне не нужно пропускать ошибки
источник

r

red75prime in Rust Beginners
Нужно превратить итератор в Err(), если там есть хоть одна ошибка, но не собирать всех его значений. Как это должно работать?
источник

АК

Александр Караев... in Rust Beginners
red75prime
Нужно превратить итератор в Err(), если там есть хоть одна ошибка, но не собирать всех его значений. Как это должно работать?
Iter<Option<_>> -> Option<Iter<_>>
если хоть один из map вернул None, то он и возвращается, иначе - возвращается итератор по уже распакованным элементам
источник

АК

Александр Караев... in Rust Beginners
но я кажется понял, в чем проблема
источник

r

red75prime in Rust Beginners
Да. Распакованные элементы нужно куда-то складывать
источник

АК

Александр Караев... in Rust Beginners
ну, да.
в момент возврата нужно точно понимать, результат None или итератор, а для этого надо пройтись..
источник

АК

Александр Караев... in Rust Beginners
понял, зайду с другой стороны, спасибо
источник

r

red75prime in Rust Beginners
Можно последующие стадии пайплайна делать с помощью and_then, а в конце собрать collect'ом в Option<Vec<_>>`
источник

АК

Александр Караев... in Rust Beginners
red75prime
Можно последующие стадии пайплайна делать с помощью and_then, а в конце собрать collect'ом в Option<Vec<_>>`
я об этом и подумал, но на самом деле у меня дальше идёт только try_fold, поэтому просто в лямбде пропишу let value = value?;, самый простой вариант
источник

АК

Александр Караев... in Rust Beginners
Ещё вопрос.
Пишу тесты, часть из них завязана на парсинг строк определенного формата (на практике будут читаться из файла). Вписывать кучу длинных строк прямо в тесты не хочу, тем более часть из них содержит non-printable символы. Мне будет удобнее положить файлы для тестов где-то рядом с тестами и в тестах их читать.
Принято ли так делать? В какую сторону гуглить?
источник

r

red75prime in Rust Beginners
Александр Караев
Ещё вопрос.
Пишу тесты, часть из них завязана на парсинг строк определенного формата (на практике будут читаться из файла). Вписывать кучу длинных строк прямо в тесты не хочу, тем более часть из них содержит non-printable символы. Мне будет удобнее положить файлы для тестов где-то рядом с тестами и в тестах их читать.
Принято ли так делать? В какую сторону гуглить?
источник

АК

Александр Караев... in Rust Beginners
Подойдёт, думаю. Но мне интересно, принято ли в принципе в проекте держать файлы для тестов и дёргать их из тестов. И если да, то куда обычно эти файлы складывают (не в папку с исходниками ведь)
источник

♚Inojelis in Rust Beginners
@ava57r забань бота
источник

П

Пашечка in Rust Beginners
Александр Караев
Подойдёт, думаю. Но мне интересно, принято ли в принципе в проекте держать файлы для тестов и дёргать их из тестов. И если да, то куда обычно эти файлы складывают (не в папку с исходниками ведь)
Я делал так:
В src лежит модуль some в виде some/mod.rs. Так как тесты обычно тоже пихаются в модуль test, то я их кладу в src/some/test/mod.rs, а необходимые файлы (правда у меня это были бинари) рядом в папке src/some/test/

Так сразу видна зона ответственности, правда пути писать в самих тестах не оч удобно)
Хз, насколько это good practice
источник

E

Eugene in Rust Beginners
подскажите: BufReader::read() сохраняет порядок следования байт?
источник

r

red75prime in Rust Beginners
Eugene
подскажите: BufReader::read() сохраняет порядок следования байт?
Да, конечно.
источник

E

Eugene in Rust Beginners
red75prime
Да, конечно.
понятно
источник