Result-a не закапываясь в if-ы ? Очень не хватает типа такого:
async fn dir_files(path: &str) -> Result<Vec<String>, anyhow::Error> {
let files = std::fs::read_dir(path).or_return(vec![]);
// если всё Ok, продолжаем
for file in files {}
...
Оператор ? по идее про это
Он только Err вернуть может, но не Ok
вроде бы функции по типу этой or_return в принципе невозможны. для этого нужна либо синтаксическая фича вроде ?(которая всегда возвращает Err) либо макрос
Так и есть. Ну а вдруг кто-то предложит крутой лайфхак ) В таком виде самое короткое что приходит в голову: let files = match std::fs::read_dir(path) { Ok(files) => files, Err(_) => return vec![], };
Обсуждают сегодня