問題タブ [rust-result]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
635 参照

rust - Rustlings が Result の消費を強制しないのはなぜですか?

短い試行の後、Rustling テストを実行すると、次のexercises/error_handling/errorsn.rsようになります。

69行目は

私が見ることができる少しのデバッグを行うと、read_and_validate(&mut b)戻ってきます。

これを改善するための私の最初の試みは、

uh-oh!しかし、これは私が見たコードで探すのが無意味に厄介に思えました。

ですから、この時点で「うーん!」と書くべきではなかったことがわかりました。どこでも。私のエラーの原因を見ると、彼らが提供するバグのあるコード (私たちが修正することになっている) には

私がしなければならなかったのは、それを次のように変更することでした。

それはすべて簡単ですが、意味がありません。見上げる.read_lineと、 が返されますResult

このすべての最後に私の質問は、なぜ呼び出し元が.read_line返されるエラーを処理する必要がないのですか? このRustlingsからの教訓は、タイプセーフに頼ることはできないとユーザーに伝えようとしているようです。ドキュメントを見てください。これはすべて文書化されていないようです。Rustには、「結果を使用する必要がある」というタイトルのセクションさえあります。

Result には属性の注釈が付けられ#[must_use]ます。これにより、コンパイラは Result 値が無視されたときに警告を発行します。これにより、Result は、エラーが発生する可能性があるが、それ以外の場合は有用な値を返さない関数で特に役立ちます。[...] Rustでそれを書くと、コンパイラは警告を出します(デフォルトでは...

この動作はどこに文書化されていますか? エラーを処理できないようにする他のコア関数は何ですか?

0 投票する
1 に答える
6209 参照

rust - 結果を返す関数を呼び出すことはできません: opaque 型の impl std::future::Future が見つかりました

から関数の結果を返すことができませんResult。すべてのチュートリアルでは、結果の使用方法のみを示していますが、結果から値を返す方法は示していません。

次のエラーが表示されます。

0 投票する
1 に答える
1452 参照

rust - Rust の結果の Iter で map を呼び出す

「関数型プログラミング」スタイルでコードを書きたいと思います。

Okただし、結果の反復子から始めて、関数をアイテムに適用したいだけです。さらに、最初のエラーで反復を停止したいと考えています (ただし、別の動作を受け入れることもできます)。

これまでのところ、ネストされたmap()パターンを使用しています: <iter>.map(|l| l.map(replace)). これは非常にまずいと思います。

毎晩の「result_flattening」を使用して、ネストさResult<Result<T, E>, E>れたそれぞれをResult<T, E>. を使用しeyre::Contextて、さまざまなエラー タイプをエラー タイプに変換しeyre::Reportます。これはすべて非常に不器用に感じます。

これをRustで書くエレガントな方法は何ですか?

最小限の作業例

さらなる参考文献: