Не могу сказать, что видел ситуацию, в которой это имело смысл, но без более четкого объяснения того, почему вы это сделаете, трудно помочь больше.
По сути, имеет bar
есть ли какое-либо использование для ввода Err()
, или он просто будет передавать его напрямую? В первом случае, тогда да, для bar
может иметь смысл взять Result
- хотя, учитывая, что вы задаете вопрос, который выглядит маловероятным
Однако, если bar
начинается с чего-то в строки
fn bar(x: Result<i32, Error>) -> Result<i32, Error> {
let y = x?;
// work with an actual `i32` and potentially output an error as well
, то есть он не имеет фактического использования для Err
, тогда нет, это не идиоматия c, ввод излишне и бесполезно сложен.
В этом если вам нужно:
fn bar(x: i32) -> Result<i32, Error> {
//...
}
fn main() {
let y = foo(2).and_then(bar).unwrap();
}