У меня есть функция:Как сбрасывать с возвращаемым значением результата?
fn test<T: FromStr>(text: &str) -> Result<T, SaleError>
SaleError
моя ошибка пользовательской структура в этом случае.
У меня есть 2 массивов, которые я хочу умножать то же значение координат и просуммировать результат:
fn calculate_result() -> Result<f64, SaleError> {
let q_coms = ["1", "2", "3"];
let v_un_coms = ["1", "2", "3"];
Ok(try!(q_coms.iter().zip(v_un_coms.iter()).fold(0.0, mult_and_sum)))
}
Функция пытается застегнуть оба массивы и чем пытается вызвать fold
на mult_and_sum
функции:
fn mult_and_sum(sum: f64, (q_com, v_un_com): (&str, &str)) -> Result<f64, SaleError> {
Ok(sum + try!(test::<f64>(q_com)) * try!(test::<f64>(v_un_com)))
}
проблема, насколько я могу понять, что ожидает fold
функции с подписью
fn mult_and_sum(sum: f64, (q_com, v_un_com): (&str, &str)) -> f64
Поскольку функция test
может потерпеть неудачу, как я могу использовать fold
со значением Result
возврата, так что если он терпит неудачу, calculate_result
вернется Err(SaleError)
?
Занятно, у меня есть [PR, чтобы добавить, что поддержка непосредственно в 'Result'] (https://github.com/rust-lang/rust/ тянуть/38580). – Shepmaster