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

fghj:

私はこのようなものを持っています(実際の機能はrust-iniIni::Section::getからです):

impl Foo {
    pub fn get<K>(&'a mut self, key: &K) -> Option<&'a str>
    where
        K: Hash + Eq,
    {
        // ...
    }
}

私はそれを数回呼ばなければなりません:

fn new() -> Result<Boo, String> {
    let item1 = match section.get("item1") {
        None => return Result::Err("no item1".to_string()),
        Some(v) => v,
    };
    let item2 = match section.get("item2") {
        None => return Result::Err("no item2".to_string()),
        Some(v) => v,
    };
}

コードの膨張を取り除くには、次のようなマクロを記述します。

macro_rules! try_ini_get {
    ($e:expr) => {
        match $e {
            Some(s) => s,
            None => return Result::Err("no ini item".to_string()),
        }
    }
}

このマクロ実装なしでコードの重複を削除する方法はありますか?

ポーン:

ok_orおよびok_or_else方法は、変換OptionにSをResultS、及び?オペレータが早期に関連付けられた定型自動Err復帰します。

あなたは次のようなことをすることができます:

fn new() -> Result<Boo, String> {
    let item1 = section.get("item1").ok_or("no item1")?;
    let item2 = section.get("item2").ok_or("no item2")?;
    // whatever processing...
    Ok(final_result)
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

ショートコードを介してワードプレスで数字を単語に変換する簡単な方法はありますか?

分類Dev

Python関数にオプションの出力引数を設定する簡単な方法はありますか?

分類Dev

時間を取得してタイムスタンプに変換する簡単な方法はありますか?

分類Dev

SpringbootでFormオブジェクトをEntityObjectにマップする簡単な方法はありますか?

分類Dev

PrintWriterをPrintStreamに変換する簡単で安全な方法はありますか?

分類Dev

配列のアイテムをオブジェクトプロパティに変換する簡単な方法はありますか?

分類Dev

Typescript:あるタイプのオブジェクトの配列を別のタイプに変換する簡単な方法はありますか

分類Dev

パンダで1-1を1月1日に変換する簡単な方法はありますか?

分類Dev

コマンドをUbuntuからDebianに、またはその逆に変換する簡単で確実な方法はありますか?

分類Dev

ソリューションに複数のプロジェクトを追加する簡単な方法はありますか?

分類Dev

XMLをPlistに変換する簡単な方法はありますか?

分類Dev

`table`を` matrix`に変換する簡単な方法はありますか?

分類Dev

Java:オブジェクトのコレクションがあるときに平均を取得する簡単な方法はありますか?

分類Dev

ActiveRecord結果セットのbelongs_toリレーションを返す簡単な方法はありますか?

分類Dev

Bashでyes / noオプションのすべての可能性をチェックする簡単な方法はありますか?

分類Dev

swift 4のナビゲーションコントローラーで戻るナビゲーションアイテムをクリックしたときにログアウトする簡単な方法はありますか?

分類Dev

ocaml-リストのオプションを解除する:もっと簡単な方法はありますか?

分類Dev

AppleアプリをAndroidアプリに変換する簡単な方法はありますか?

分類Dev

Racketで文字列を変数名(識別子)に変換する簡単な方法はありますか?

分類Dev

アプリケーションIDと名前を変更する簡単な方法はありますか?

分類Dev

javascript es2018でオーバーライドする代わりに、オブジェクトをマージしてそれらのintプロパティを合計する簡単な方法はありますか?

分類Dev

SpringにBeanが存在しない場合に空のコレクションを自動配線する簡単な方法はありますか?

分類Dev

オプションを「反転」する簡潔な方法はありますか?

分類Dev

オプションを「反転」する簡潔な方法はありますか?

分類Dev

forループの結果を変数に格納して、rvestでスクレイプしてループする簡単なソリューション

分類Dev

欠落している数列をその範囲に変換する簡単な方法はありますか?

分類Dev

ドロップダウンリストごとに異なるオプションを選択し、次のオプションでそれを繰り返すことができるループロジックを作成する方法はありますか?

分類Dev

列挙型クラスを文字列(c ++)に変換する簡単な方法はありますか?

Related 関連記事

  1. 1

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

  2. 2

    ショートコードを介してワードプレスで数字を単語に変換する簡単な方法はありますか?

  3. 3

    Python関数にオプションの出力引数を設定する簡単な方法はありますか?

  4. 4

    時間を取得してタイムスタンプに変換する簡単な方法はありますか?

  5. 5

    SpringbootでFormオブジェクトをEntityObjectにマップする簡単な方法はありますか?

  6. 6

    PrintWriterをPrintStreamに変換する簡単で安全な方法はありますか?

  7. 7

    配列のアイテムをオブジェクトプロパティに変換する簡単な方法はありますか?

  8. 8

    Typescript:あるタイプのオブジェクトの配列を別のタイプに変換する簡単な方法はありますか

  9. 9

    パンダで1-1を1月1日に変換する簡単な方法はありますか?

  10. 10

    コマンドをUbuntuからDebianに、またはその逆に変換する簡単で確実な方法はありますか?

  11. 11

    ソリューションに複数のプロジェクトを追加する簡単な方法はありますか?

  12. 12

    XMLをPlistに変換する簡単な方法はありますか?

  13. 13

    `table`を` matrix`に変換する簡単な方法はありますか?

  14. 14

    Java:オブジェクトのコレクションがあるときに平均を取得する簡単な方法はありますか?

  15. 15

    ActiveRecord結果セットのbelongs_toリレーションを返す簡単な方法はありますか?

  16. 16

    Bashでyes / noオプションのすべての可能性をチェックする簡単な方法はありますか?

  17. 17

    swift 4のナビゲーションコントローラーで戻るナビゲーションアイテムをクリックしたときにログアウトする簡単な方法はありますか?

  18. 18

    ocaml-リストのオプションを解除する:もっと簡単な方法はありますか?

  19. 19

    AppleアプリをAndroidアプリに変換する簡単な方法はありますか?

  20. 20

    Racketで文字列を変数名(識別子)に変換する簡単な方法はありますか?

  21. 21

    アプリケーションIDと名前を変更する簡単な方法はありますか?

  22. 22

    javascript es2018でオーバーライドする代わりに、オブジェクトをマージしてそれらのintプロパティを合計する簡単な方法はありますか?

  23. 23

    SpringにBeanが存在しない場合に空のコレクションを自動配線する簡単な方法はありますか?

  24. 24

    オプションを「反転」する簡潔な方法はありますか?

  25. 25

    オプションを「反転」する簡潔な方法はありますか?

  26. 26

    forループの結果を変数に格納して、rvestでスクレイプしてループする簡単なソリューション

  27. 27

    欠落している数列をその範囲に変換する簡単な方法はありますか?

  28. 28

    ドロップダウンリストごとに異なるオプションを選択し、次のオプションでそれを繰り返すことができるループロジックを作成する方法はありますか?

  29. 29

    列挙型クラスを文字列(c ++)に変換する簡単な方法はありますか?

ホットタグ

アーカイブ