问题标签 [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 回答
557 浏览

rust - 如何在返回 Result<() , Error> 的函数中从 Serde 返回错误

我正在尝试使用返回的函数从 Serde 返回错误Result<(), Error>

锈游乐场

经过各种尝试,我一直无法纠正问题返回错误,我该怎么办?

0 投票
1 回答
190 浏览

rust - Result<()> 在 Rust 中是什么意思?

我正在查看std::env::current_dir函数文档,这引起了我的注意:

我的理解是 Result 应该有 aTE. 你怎么能用它们来代替它们()

0 投票
1 回答
285 浏览

rust - 结果中的“T”代表什么在锈?

官方文档大量引用T

我认为这些是占位符首字母缩写词。虽然E应该代表“错误”,但我不确定T代表什么。

0 投票
2 回答
205 浏览

error-handling - 从迭代器收集所有错误的惯用方法

假设我有attrs: Vec<Attribute>一些函数属性和一个fn map_attribute(attr: &Attribute) -> Result<TokenStream, Error>将属性映射到某些代码的函数。

我知道我可以写这样的东西:

然而,这不是我想要的。我想要的是一次吐出所有错误,而不是停止第一个错误。目前我做这样的事情:

第二个版本可以满足我的要求,但比第一个版本要冗长得多。如果可能的话,是否有更好/更惯用的方法来实现这一点,而无需创建我自己的迭代器?

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 回答
113 浏览

error-handling - 如何重用“结果”?

以下不编译。使这项工作的规范方法是什么?

为了完整起见,这是错误消息:

0 投票
1 回答
1690 浏览

rust - dotenv().ok() 有什么作用?

我将 Diesel ORM 包装器与 PostgreSQL 一起使用。我正在关注他们网站上的指南,其中包含以下代码:

dotenv()我通过 dotenv 文档了解了它的作用——它加载了 env 文件。在源代码中,我看到它dotenv()返回一个Result. 那做什么ok()呢?它会解开结果吗?如果是这样,为什么不使用unwrap()

0 投票
1 回答
6209 浏览

rust - 无法调用返回结果的函数:发现不透明类型 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 写这个的优雅方式是什么?

最小的工作示例

进一步参考:

0 投票
1 回答
388 浏览

rust - 如何在 Rust 中返回 Result 数据类型?

我有下面的代码

largest_prime_factor函数的作用是找到其输入中数字的最大素因子。

我将所有素因子推入primes向量,然后返回最大的,但我不确定如何返回最大的整数。如果 .max() 函数返回错误 - 文档说它会返回 None,但是当我将 None 作为返回的可能性时,它说它不是数据类型,并且使用我的变体枚举,但是看看在文档中, None 似乎确实是枚举。那么这个函数实际上返回了什么?我是否使用?不正确