Rust 中模式匹配中的类型注释?

2024-04-10

我正在深入研究 Rust,特别是优雅地处理错误,但我在类型推断方面遇到了一些麻烦。

extern crate mysql;

use mysql as my;

fn main() {
    my_test();
}

fn my_test() -> Result<(), my::Error> {
    let pool = try!(my::Pool::new(""));
    let res = try!(pool.prep_exec("select 1 as count", ()));
    for rows in res {
        let row: my::Row = try!(rows);
        match row.take("count") {
            None => (),
            Some(i) => println!("{:?}", i),
        };
    }
    Ok(())
}

这导致

src/bin/main.rs:86:12: 86:13 错误:无法推断足够的类型信息_;需要类型注释或通用参数绑定 [E0282]

不幸的是,该箱子中的文档使用unwrap很多,这对我没有帮助。在哈斯克尔,我会做类似的事情println!("{:?}", i :: i32),但我不知道如何在 Rust 中做到这一点。我尝试过各种方法来投射row.take,但我没有任何运气。如果有更惯用的方法的话,我很乐意看到可以用多种方式来构造此代码。


看着Row::take http://blackbeam.org/doc/mysql/struct.Row.html#method.take文档中我们可以看到两种类型的参数T and I。方式I推断自"count"参数,类型T用于返回类型。我们有两个选项来指定返回类型,explicit https://doc.rust-lang.org/reference.html#generic-functions在方法调用中,或隐含在变量类型中(就像您所做的那样)row):

fn my_test() -> Result<(), my::Error> {
    let pool = try!(my::Pool::new(""));
    let res = try!(pool.prep_exec("select 1 as count", ()));
    for rows in res {
        let mut row: my::Row = try!(rows);
        // specify type T explicitly, let type I to be inferred
        match row.take::<i32, _>("count") {
            None => (),
            Some(i) => println!("{:?}", i),
        };
        // or
        let s: Option<i32> = row.take("count");
    }
    Ok(())
}

The 类型归属 RFC https://github.com/rust-lang/rfcs/blob/master/text/0803-type-ascription.md提出了一种用类型注释子表达式的语法(类似于 Haskell 示例)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 中模式匹配中的类型注释? 的相关文章

随机推荐

  • eclipse下同一个多模块maven项目的多个版本

    我想从事两个不同的版本 of the 相同的多模块 Maven 项目日食之下 不幸的是 当你在eclipse下导入多模块maven项目时 你可以改变父模块项目名称自己命名 以防止冲突 但是不是子模块项目名称 子模块作为根项目导入 以模块名称
  • 使用 GPS 获取 Android 手机的位置

    我还有一个关于基本 Android 编程的问题 如何访问 GPS 来获取运行应用程序的手机的当前位置 检索信息需要多长时间 在这种情况下 GPS 可能被禁用 如何再次启用 禁用它 必须在 andorid 清单中授予哪些权限 问候并感谢您的回
  • 移动结账时不存在 PayPal POST 付款变量

    我使用 JS 立即购买按钮进行付款 如下所示
  • Rails 中的订单确认页面

    我一直在尝试为我的 Rails 应用程序创建一个订单确认页面 但不太确定如何以一种轻松的方式完成它 上面有几个答案this https stackoverflow com questions 445293 ruby on rails con
  • 将静态库添加到 podspec

    我的 podspec 需要静态库 OpenSSL 为了方便起见 我将库与 Pod 一起运送 静态库包含 二进制文件 MyPod openssl bin libcrypto a and MyPod openssl bin libsll a 标
  • awk + ​​如何查找列中的重复项?

    如何查找列中的重复项 head countries lat long int code3 csv cat n 1 country latitude longitude name code 2 AD 42 546245 1 601554 An
  • Django transaction.commit_on_success 不回滚事务

    我正在尝试在 MySQL 上使用 Django 事务the commit on success装饰者 http docs djangoproject com en dev topics db transactions django db t
  • 创建反应应用程序不在开发或构建中加载CSS背景图像

    我无法加载某些背景图像 我对最初的创建反应应用程序进行了一些重大修改 我的文件夹结构现在如下 注意 我省略了一些文件和文件夹 如果您需要更多 请告诉我 App node modules src client build node modul
  • CSS/JavaScript:使元素成为最顶层的 z-index/最顶层的模态元素

    我想制作一个元素 例如 div 是页面的最顶层 我的假设是 我能做到这一点的唯一方法是指定该元素具有style z index 浏览器允许的最大值 int32 它是否正确 相反 是否有可能以某种方式获取元素的z index谁的最高 并使这个
  • Spring MVC Web 应用程序 - 从属性启用/禁用控制器

    我有一个在 Tomcat 中运行的 Web 应用程序 并使用 Spring MVC 来定义控制器和映射 我有以下课程 Controller api test public class TestController RequestMappin
  • 你如何处理NUL?

    当我们谈论 NULL 时 我有时会遇到与其他程序员的沟通问题 现在 NULL 可以是 空指针NUL 字符某种数据库中的空数据元素 NUL 似乎是最令人困惑的 它是 ASCII 字符 0x00 我倾向于在代码中使用 0 来表示它 我小组中的一
  • 如何获取 JavaScript 对象的类?

    我创建了一个 JavaScript 对象 但是如何确定该对象的类 我想要类似于Java的东西 getClass 方法 没有与 Java 完全对应的东西getClass http docs oracle com javase 7 docs a
  • 瞬态部分NameKeyPath & NSSortDescriptor NSFetchedResultsController

    我在核心数据中有一个任务列表 我使用 NSFetchedResultsController 将它们提取到 UITableView 中 我需要自定义订单中的自定义部分 OVERDUE ACTIVE ONGOING 推迟 完全的 为了确定任务应
  • Delphi:30 天试用

    如何为我的应用程序提供 30 天试用期 我需要允许用户仅使用应用程序 30 天 这几天怎么算 我将第一个和最后一个日期保存在注册表中 但如果更改系统时间 则不会有任何保护 我需要数一下这30天 您可能会想出一个需要互联网连接的系统 但如果没
  • 告诉 Iron Router 不要拦截链接

    我正在将相当大的应用程序迁移到 Iron Router 在客户端 所有未知路由都被重定向到 404 此外 有些路由是从服务器端管理的 例如 static 仅通过中间件显示静态页面 问题是 Iron Router 现在拦截所有链接点击 所以当
  • 通过 Azure AD Graph API 作为电子邮件别名发送电子邮件

    在 Graph API 浏览器中 您可以使用端点发送电子邮件 https graph microsoft com v1 0 me sendMail https graph microsoft com v1 0 me sendMail和一个基
  • 如何生成一定范围内的加密安全随机整数?

    我必须为生成密码的程序生成给定范围内的统一 安全的随机整数 现在我用这个 RNGCryptoServiceProvider rng new RNGCryptoServiceProvider byte rand new byte 4 rng
  • ASP.NET MVC GetFullHtmlFieldId 未返回有效 ID

    我已经看过了 但它对我没有帮助 GetFullHtmlFieldId 返回错误的 id 属性值 https stackoverflow com questions 15457883 getfullhtmlfieldid returning
  • Excel 中的排序保持风格?

    我得到了一个带有交替背景的 Excel 文件 以提高可读性 Row 1 White Background Row 2 Gray Background Row 3 White Backgrund 我使用 VBA 函数对 Excel 文件的内容
  • Rust 中模式匹配中的类型注释?

    我正在深入研究 Rust 特别是优雅地处理错误 但我在类型推断方面遇到了一些麻烦 extern crate mysql use mysql as my fn main my test fn my test gt Result lt my E