結果をオプションに変換するクリーンな方法は何ですか?

公演

より新しいRustバージョンに更新する前は、以下が機能していました。

fn example(val: &[&str]) {
    let parsed_value: Vec<usize> = val
        .iter()
        .filter_map(|e| e.parse::<usize>())
        .collect();
}

ただし、解析メソッドがのResult代わりに型を返すようOptionになり、エラーが発生します。

error[E0308]: mismatched types
 --> src/lib.rs:4:25
  |
4 |         .filter_map(|e| e.parse::<usize>())
  |                         ^^^^^^^^^^^^^^^^^^ expected enum `std::option::Option`, found enum `std::result::Result`
  |
  = note: expected type `std::option::Option<_>`
             found type `std::result::Result<usize, std::num::ParseIntError>`

Option条件付きでスルーを作成することはできますが、より良い/よりクリーンな方法はありますか?

シェップマスター

を使用しResult::okます。明確にするために追加されたタイプ:

let res: Result<u8, ()> = Ok(42);
let opt: Option<u8> = res.ok();
println!("{:?}", opt);

対称性のために、またそこだOption::ok_orOption::ok_or_elseから行くことOptionResult


あなたの場合、イテレータがあります。

失敗無視したい場合は、を使用してくださいIterator::flat_mapResult(およびOption)を実装するのでIntoIterator、これは機能します:

let parsed_value: Vec<usize> = val
    .iter()
    .flat_map(|e| e.parse())
    .collect();

最初の失敗で停​​止したい場合はcollect、1つの大きなものにすることができますResultこれはそれほど明白ではありませんがFromIteratorcollect-ableアイテムの完全なリストについてはの実装者チェックしてください

let parsed_value: Result<Vec<usize>, _> = val
    .iter()
    .map(|e| e.parse())
    .collect();

もちろん、最初の例が示すように、大きなものResultをに変換することもできOptionます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マクロなしでオプションを結果に簡単に変換する方法はありますか?

分類Dev

オプションのエラーをスローする最もクリーンな方法は何ですか?

分類Dev

SwiftのオプションのNSNumberをオプションのIntに変換する方法は?(私のコードに何か改善はありますか?)

分類Dev

コンセントをアクションに変換するクリーンな方法はありますか?

分類Dev

トランザクションスクリプトでActiveRecordの結果をjsonに変換する

分類Dev

ld -Ttextオプションをリンカースクリプトに変換する方法は?

分類Dev

フロントエンドアプリケーションに構成オプションを配置する最も一般的な方法は何ですか?

分類Dev

アプリケーションを終了する前にGdiplusShutdownを呼び出さなかった場合の結果は何ですか?

分類Dev

アクションの結果を得る最良の方法は何ですか?

分類Dev

ドキュメントを変更する(変換、マージなど)ためにAdobe Acrobat(リーダーではない)で使用できるコマンドラインオプションは何ですか?

分類Dev

CSSトランジション効果を一時的に無効にする最もクリーンな方法は何ですか?

分類Dev

ビデオゲームアプリで@メンション構文をHTMLに変換する方法は?

分類Dev

/ bootパーティションをクリーンアップする最も安全な方法は何ですか?

分類Dev

/ bootパーティションをクリーンアップする最も安全な方法は何ですか?

分類Dev

フリンク:すべてのパーティションからの結果を要約するための最良の方法は何ですか

分類Dev

フリンク:すべてのパーティションからの結果を要約するための最良の方法は何ですか

分類Dev

jdbcの結果を不変のコレクションに変換する方法

分類Dev

配列リテラルをswiftでフィルタリングする場合、結果にオプションが含まれるのはなぜですか?

分類Dev

.NETCoreと.NETFrameworkアプリケーションの両方でライブラリプロジェクトを使用する場合、ライブラリプロジェクトを変換するための最良のオプションは何ですか?

分類Dev

基本的なインデックスフォームにすべて削除オプションを実装する適切な方法は何ですか

分類Dev

ODBCの10進数をC#intに変換する最もクリーンな方法は何ですか?

分類Dev

&str型を数値型に変換する最もクリーンな方法は何ですか?

分類Dev

ISO-8859-1 / Latin-1を文字列(UTF-8)に変換するオプションは何ですか?

分類Dev

ネイティブクエリ結果にマッピングするときにPOJOでオプションのフィールドを定義する方法

分類Dev

アクションリスナーをプログラムする一般的な方法は何ですか?

分類Dev

複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

分類Dev

シンプルなSwiftUIアプリでナビゲーションリンクを効果的に使用するにはどうすればよいですか?

分類Dev

オプションのマークを書かずに変数を宣言できるのはなぜですか?

分類Dev

HTMLオプションボックスにクエリ結果を表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    マクロなしでオプションを結果に簡単に変換する方法はありますか?

  2. 2

    オプションのエラーをスローする最もクリーンな方法は何ですか?

  3. 3

    SwiftのオプションのNSNumberをオプションのIntに変換する方法は?(私のコードに何か改善はありますか?)

  4. 4

    コンセントをアクションに変換するクリーンな方法はありますか?

  5. 5

    トランザクションスクリプトでActiveRecordの結果をjsonに変換する

  6. 6

    ld -Ttextオプションをリンカースクリプトに変換する方法は?

  7. 7

    フロントエンドアプリケーションに構成オプションを配置する最も一般的な方法は何ですか?

  8. 8

    アプリケーションを終了する前にGdiplusShutdownを呼び出さなかった場合の結果は何ですか?

  9. 9

    アクションの結果を得る最良の方法は何ですか?

  10. 10

    ドキュメントを変更する(変換、マージなど)ためにAdobe Acrobat(リーダーではない)で使用できるコマンドラインオプションは何ですか?

  11. 11

    CSSトランジション効果を一時的に無効にする最もクリーンな方法は何ですか?

  12. 12

    ビデオゲームアプリで@メンション構文をHTMLに変換する方法は?

  13. 13

    / bootパーティションをクリーンアップする最も安全な方法は何ですか?

  14. 14

    / bootパーティションをクリーンアップする最も安全な方法は何ですか?

  15. 15

    フリンク:すべてのパーティションからの結果を要約するための最良の方法は何ですか

  16. 16

    フリンク:すべてのパーティションからの結果を要約するための最良の方法は何ですか

  17. 17

    jdbcの結果を不変のコレクションに変換する方法

  18. 18

    配列リテラルをswiftでフィルタリングする場合、結果にオプションが含まれるのはなぜですか?

  19. 19

    .NETCoreと.NETFrameworkアプリケーションの両方でライブラリプロジェクトを使用する場合、ライブラリプロジェクトを変換するための最良のオプションは何ですか?

  20. 20

    基本的なインデックスフォームにすべて削除オプションを実装する適切な方法は何ですか

  21. 21

    ODBCの10進数をC#intに変換する最もクリーンな方法は何ですか?

  22. 22

    &str型を数値型に変換する最もクリーンな方法は何ですか?

  23. 23

    ISO-8859-1 / Latin-1を文字列(UTF-8)に変換するオプションは何ですか?

  24. 24

    ネイティブクエリ結果にマッピングするときにPOJOでオプションのフィールドを定義する方法

  25. 25

    アクションリスナーをプログラムする一般的な方法は何ですか?

  26. 26

    複雑なネストされたSQLアソシエーションを管理可能なサービスに変換するためのフロントエンドデータモデリングのベストプラクティスは何ですか?

  27. 27

    シンプルなSwiftUIアプリでナビゲーションリンクを効果的に使用するにはどうすればよいですか?

  28. 28

    オプションのマークを書かずに変数を宣言できるのはなぜですか?

  29. 29

    HTMLオプションボックスにクエリ結果を表示するにはどうすればよいですか?

ホットタグ

アーカイブ