217得票5回答
当 Iterator::map 返回 Result::Err 时,我该如何停止迭代并返回错误?

我有一个返回 Result 的函数: fn find(id: &Id) -> Result<Item, ItemError> { // ... } 然后另一个人这样使用它: let parent_items: Vec<Item> = par...

66得票2回答
如何在函数成功时返回无结果的错误?有什么惯用方法?

Rust中,我相信处理可恢复错误的惯用方法是使用Result。例如,这个函数显然是惯用的:fn do_work() -> Result<u64, WorkError> {...} 当然,有些函数只有一个明显的失败状态,因此使用 Option 类型。一个惯用的例子是:fn do...

53得票4回答
如何最通俗易懂地使用“结果迭代器”?

我有这样的代码:let things = vec![/* ...*/]; // e.g. Vec<String> things .map(|thing| { let a = try!(do_stuff(thing)); Ok(other_st...

28得票2回答
不使用match,是否有可能将Option<Result<T, E>>转换为Result<Option<T>, E>?

我的第一反应是对Option进行映射,但我无法在闭包内部使用try!。这个match语句看起来有点多余,但我无法想出如何简化它。 fn example&lt;T, E&gt;(val: Option&lt;Result&lt;T, E&gt;&gt;) -&gt; Result&lt;Opt...

13得票1回答
dotenv().ok()是什么意思?

我正在使用基于PostgreSQL的Diesel ORM封装。我在遵循他们网站上的指南,其中有以下代码:pub fn establish_connection() -&gt; PgConnection { dotenv().ok(); let database_url =...

8得票1回答
在Rust中对Results的迭代器调用map函数

我希望以“函数式编程”风格编写一些代码。 但是,我从一个结果的迭代器开始,我只想将函数应用于Ok项。此外,我想在第一个错误停止迭代(不过,我可以接受不同的行为)。 目前,我正在使用嵌套的map()模式:&lt;iter&gt;.map(|l| l.map(replace))。我觉得这非常丑...

8得票3回答
带有返回Result的闭包的折叠函数

我使用正则表达式包来寻找符合以下正则表达式的某些文本: lazy_static! { static ref FIND_STEPS_RE: Regex = Regex::new(r"my regex").unwrap(); } 我希望能找到所有可能的捕获,并对它们进...

7得票1回答
无误结果的意义在于什么,与仅返回Ok()分支有何不同?

Warp 拒绝处理器的典型示例是这个 async fn handle_rejection(err: Rejection) -&gt; Result&lt;impl Reply, Infallible&gt; { 但是,如果err是Infallible类型并且永远不会被触发,那么使用Re...

7得票1回答
无法调用返回Result的函数:找到不透明类型impl std::future :: Future

我无法从Result返回函数的结果。每个教程都只展示了如何使用Result,但没有展示如何从中返回一个值。 fn main(){ let mut a: Vec&lt;String&gt; = Vec::new(); a = gottem(); println!("{}...