私が持っている機能:結果の戻り値でfoldを使用するにはどうすればよいですか?
fn test<T: FromStr>(text: &str) -> Result<T, SaleError>
SaleError
は、この場合の私のカスタムのエラー構造体です。
私は同じ位置の値を乗算し、その結果を合計する2つの配列があります。関数は配列と試行がmult_and_sum
機能にfold
を呼び出すよりも、両方を圧縮しようとする
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)))
}
を:
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
が署名
失敗する可能test
機能は、どのように私はそれが失敗したので、もしResult
戻り値でfold
を使用することができますので、calculate_result
はErr(SaleError)
を返すのだろうか?
、私はhttps://github.com/rust-lang/rust/([ 'Result'に直接そのサポートを追加するためにPR]持っていますプル/ 38580)。 – Shepmaster