Теперь скажем сигнатура g() поменялась и стала возвращать Result. Как наиболее красиво поменять f? Код для примера
// Was: fn g(i: A) -> A
// Now: fn g(i: A) -> Result<A, Error>
fn f(c: Configuration) -> Result<(A, B), Error> {
match c {
//Was: V1 => (g(1), 10),
//Now:
V1 => {
let x = g(1)?; // don't like that it requires now a separate line
Ok((x, 10))
}
//Was: V2 => (g(2), 12),
V2 => {
let x = g(2)?;
Ok((x, 12))
}
}
}
Разве Ok((g(1)?, 10)) не работает?
изменение сигнатур = переписывание кода, так что все равно
Да, так сработало. я пытался сделать Ок вокруг всего матча и так не работало
Обсуждают сегодня