Rust 从 fn 返回结果错误:类型不匹配

2024-02-05

我希望这个函数返回一个错误结果:

fn get_result() -> Result<String, std::io::Error> {
     // Ok(String::from("foo")) <- works fine
     Result::Err(String::from("foo"))
}

错误信息

error[E0308]: mismatched types
 --> src/main.rs:3:17
  |
3 |     Result::Err(String::from("foo"))
  |                 ^^^^^^^^^^^^^^^^^^^ expected struct `std::io::Error`, found struct `std::string::String`
  |
  = note: expected type `std::io::Error`
             found type `std::string::String`

我很困惑如何在使用预期的结构时打印出错误消息。


错误信息非常清楚。您的返回类型为get_result is Result<String, std::io::Error>,这意味着在Result::Ok情况下,其内在价值Ok变体是类型String,而在Result::Err情况下,其内在价值Err变体是类型std::io::Error.

您的代码尝试创建一个Err具有 type 内部值的变体String,编译器正确地抱怨类型不匹配。创建一个新的std::io::Error,您可以使用new方法上std::io::Error https://doc.rust-lang.org/std/io/struct.Error.html#method.new。以下是使用正确类型的代码示例:

fn get_result() -> Result<String, std::io::Error> {
    Err(std::io::Error::new(std::io::ErrorKind::Other, "foo"))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 从 fn 返回结果错误:类型不匹配 的相关文章

随机推荐

  • R 中牛区网格的一个共享图例

    我刚刚用包构建了一个网格cowplot 标记 A D 的图 这些图是用包制作的ggplot2 pfour lt ggplot four aes x Concentration y Percentage fill Phenotype geom
  • C# - 检查是否按下了特定键

    我试图检查是否按下了某个键 但收到以下错误消息 错误 1 当前上下文中不存在名称 键盘 错误2 当前上下文中不存在名称 Key 你能告诉我如何修复它吗 public void Main while true if Keyboard IsKe
  • 启动 JettyRun 时排除 Gradle 类路径运行时

    我有基本的 Gradle Web 应用程序项目 它工作正常 但我注意到 Gradle 的运行时类路径包含在 jetty 中 这有可能与 Web 应用程序发生冲突 请注意 下面的 gradle 使用的是稍旧版本的 logback 并且 SL4
  • 连续播放多个声音时有时会保持无声,为什么?

    我遇到了一个奇怪的问题 希望有人能回答它 我有 4x4 按钮 如果我点击它们 每个按钮都会播放 1 秒的短声 我的代码 Button 1 Button findViewById R id button1 Button 1 setOnClic
  • Python 多处理锁

    此多处理代码按预期工作 它创建 4 个 Python 进程 并使用它们打印数字 0 到 39 每次打印后都有延迟 import multiprocessing import time def job num print num time s
  • 在android中使用标签设置和获取片段

    我用 viewpager 创建了一个选项卡布局 一切都很好 除了我需要在特定时刻运行一个方法 所以我需要获取片段实例并运行他们的方法 我是这样创建的 Override protected void onCreate Bundle saved
  • 使用 VsVim 搜索时突出显示会使代码不可读

    我已经使用 VsVim 一段时间了 我对它非常满意 然而 让我烦恼的一件事是当我在 VsVim 中进行任何类型的搜索时 文本的突出显示 例如使用 或标准搜索 我花了几个小时尝试更改 Visual Studios 选项菜单中的字体和颜色 但我
  • QT5:无法在 Windows 中加载 psql 驱动程序

    我想在 Windows 7 中加载 qt5 psql 驱动程序 我已经这样加载库 qDebug lt lt QCoreApplication libraryPaths QString driverName QPSQL QSqlDatabas
  • 移动网站的“链接到 App Store”小部件

    在过去的几个月里 我发现了几个使用某种 小部件 的网站 如果我使用 iPhone 打开具有此小部件的网站 它将显示指向 网站相关 iPhone 应用程序的链接 它看起来像一个简单的 div 包含应用程序名称 评级和链接 该小部件甚至 知道
  • 从 ViewPager 获取不同片段的值

    我正在开发一个应用程序 其中片段是动态生成的 private void setupViewPager ViewPager viewPager adapter new ViewPagerAdapter getSupportFragmentMa
  • Google Sheets:通过 Apps 脚本批量 getRangeByName

    是否可以获得多个按名称范围一通电话 我有一个复杂的函数 需要按名称获取多个范围 而 Spreadsheet getRangeByName name 会显着减慢我的脚本速度 有时这些调用大约需要 2 秒 有时单个调用可能需要大约 45 秒 限
  • svn https: “ra_serf: SSL 通信期间发生错误”

    我知道这与其他帖子的标题相同 但我搜索了又搜索 但找不到解决方案 我在所有机器上从 TortoiseSVN 1 6 升级到 1 8 4 我的主开发机器开始出现此错误 ra serf An error occurred during SSL
  • 具有任意属性的 SPARQL 属性路径查询

    SPARQL 属性路径 http www w3 org TR sparql11 query propertypaths任意长度的查询需要使用特定的属性 我想查询并查找从一个资源开始并以另一个资源结束的任何路径 例如 SELECT p WHE
  • 如何 Iterator::chain 迭代器向量?

    对于给定的一组迭代器 a b c 可以使用以下命令成功链接它们a chain b chain c 由于我尝试编写的 CLI 实用程序提供了路径向量 字符串 dirs a b c d e f 我想使用walkd dir在它们每个上 然后将它们
  • 更改node_modules位置

    有没有办法更改node modules文件夹位置 例如 dir1 dir2 node modules to dir1 dir2 node modules 以下是查看的代码node modules默认文件夹 Module prototype
  • 动作和动作监听器之间的区别

    有什么区别action and actionListener 我应该什么时候使用action versus actionListener 动作监听器 Use actionListener如果你想要一个钩子before真正的业务行动得到执行
  • 使用 Spring Security 进行单元测试

    我的公司一直在评估 Spring MVC 以确定我们是否应该在下一个项目中使用它 到目前为止 我喜欢我所看到的 现在我正在研究 Spring Security 模块 以确定它是否是我们可以 应该使用的东西 我们的安全要求非常基本 用户只需提
  • 如何使用 CodeModel 初始化二维数组

    我需要初始化一个二维数组 如下所示 Object someName param1 param2 param3 param4 param5 param6 我尝试过像 JExpression exp JExpr newArray codeMod
  • 多用户角色环回

    我正在尝试使用 Loopback 作为后端来制作一个应用程序 我以前已经使用过环回 但现在我想做一些我以前从未做过的事情 我想要的很简单 我将有 3 种类型的用户 管理员 服务者和默认用户 但是 我需要限制每种类型用户的访问控制 管理员可以
  • Rust 从 fn 返回结果错误:类型不匹配

    我希望这个函数返回一个错误结果 fn get result gt Result