Minoru я ещё подумываю при ошибках deserialize тоже возвращать Ok(None), будто бы записи нет. Потому что это просто кеш; если ничего не удалось из него достать, то не беда, просто пойдём по медленному пути
Minoru при этом если «не удалось достать» вызвано ошибками чтения с диска, закончившейся памятью или ещё чем-то таким, я желал бы знать, поэтому тут надо возвращать Err
Minoru а, ну и на всякий случай напомню, что `x?` в Rust превращается во что-то типа `let x = match x { Ok(x) => x, Err(e) => return Err(e), };`. Не смейте говорить, что эта функция не возвращает Err :)
Minoru а, ну и на всякий случай напомню, что `x?` в Rust превращается во что-то типа `let x = match x { Ok(x) => x, Err(e) => return Err(e), };`. Не смейте говорить, что эта функция не возвращает Err :)
Minoru do notation там нет, но есть комбинаторы (and_then, map etc.). Можно вот эту лапшу if-ов превратить в стройную функциональную колбаску, наверное