在 Rust 中,“as”是一个运算符吗?

2024-03-07

Rust 参考目前说了以下内容the as操作员 https://doc.rust-lang.org/reference.html#type-cast-expressions:

7.2.12.5 类型转换表达式

类型转换表达式用二元运算符表示as.

执行一个as表达式将左侧的值转换为右侧的类型。

一个例子as表达:

fn average(values: &[f64]) -> f64 {
  let sum: f64 = sum(values);
  let size: f64 = len(values) as f64;
  sum / size
}

(另外,因为它是相关的:

7.2.12.8 运算符优先级

Rust 二元运算符的优先级顺序如下,从强到弱:

as
* / %
+ -
<< >>

)

天真地使用它作为运算符似乎不起作用:

fn main() {
    let x = 100 as u16 << 8;
}

实际上并没有编译:

% rustc testing.rs
testing.rs:2:24: 2:25 error: expected type, found `8`
testing.rs:2    let x = 100 as u16 << 8;

带括号——let x = (100 as u16) << 8;——它编译了。参考文献中的示例中不需要括号,但此处似乎需要括号。这里的确切语法是什么?是否需要括号,除非这是唯一正确的事情=?或者我只是做错了什么?

It is a bit weird that this is called an operator, as the RHS would seem to need to be a type, and typically, I think of an operator as taking two expressions…


这里的技巧是as在其右侧采用类型,即语法as看起来像:是expression 'as' type。后面的表达式为as看起来有点像类型(的开始),它正在尝试解析u16<<... as if u16有一个类型参数(带有这样的前缀的类型的示例是Foo<<T>::Bar>).

这基本上只是特定的行为<<因为它看起来像类型参数分隔符。如果使用的运算符不能出现在类型中的前导标识符之后,则它可以正常工作:

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

在 Rust 中,“as”是一个运算符吗? 的相关文章

随机推荐

  • Java 中是否有比 Xalan/Xerces 更快的 XML 解析器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 除了利用 Tarari 或 Datapower 等硬件之外 我还没有找到很多方法来提高执行密集 XML 处理的 Java 应用程序的性能
  • 如何打开新活动单击列表视图中的项目?

    我无法通过单击列表视图中的项目来启动新活动 我要那个onItemClick可以打开ApkInfoActivity 实际上 当我点击时什么也没有发生 protected void onItemClick ListView l View v i
  • 使用“withCompletionHandler”时何时释放

    我在获取数据时使用块来执行操作 但是什么时候释放之前创建的数组 GKLeaderboard leaderboardRequest GKLeaderboard alloc init if leaderboardRequest nil lead
  • Rake命名空间下的任务变量

    今天我在我的 rake 脚本中看到了一件奇怪的事情 我在不同的命名空间下有两个 Rake 任务 如下所示 path home tomcat tomcat namespace stage do path home tomcat stage t
  • 使用 ng-file-upload + acl 上传时出现 403 错误:公共读取(Angular + Firebase + Aws S3 应用程序)acl:​​私人上传正常

    设想 开发网站的博客功能 Angular Firebase Aws S3 ng 文件上传 https github com danialfarid ng file upload s3 将图像上传到 S3 进行存储 并将 url 存储在 fi
  • 覆盖 artisan migrate 命令的默认 Laravel 数据库配置

    对于我的数据库 MySQL 我有两个用户帐户 一个 mydbuser 对于对所有表具有选择 插入 更新 删除权限的一般应用程序访问 其他 mydbadmin 具有管理表等的权限 CREATE USER mydbadmin IDENTIFIE
  • C# 错误 - 并非所有代码路径都返回值

    我知道还有其他类似的帖子 但其他帖子并没有帮助我找到问题的解决方案 我有 1 个表格和 4 个带有方法的类 并且在名为 成本 的类中出现问题 将所有其他 3 个类放入其中 我将在这里发布四个课程 头等舱 Alimenta ao using
  • SQL 查询 - 返回连接表的前两条记录的连接

    我有两张桌子 Patient pk患者ID 名 Surname 患者状态 pkPatientStatusId fk患者 ID 状态码 开始日期 EndDate Patient gt 患者状态是一对多的关系 我想知道是否可以在 SQL 中进行
  • 替换 Swift 2.2 中的 _stdlib_getDemangledTypeName()

    最新版本的 Swift 2 2 删除了 stdlib getDemangledTypeName 我有什么选择来替代它 我目前正在这样的调试消息中使用 let debugStr stdlib getDemangledTypeName self
  • 在 Magento 中操作多个购物车规则

    上次我遇到困难时 我曾询问过如何操纵购物车规则本文 https stackoverflow com questions 18401781 manipulating shopping cart rules 现在 我在购物车规则中添加了更多条件
  • 如何在 postgres 中对结果执行按位运算符?

    如果我有几行 并且我想对结果执行按位或 我该如何在 Postgres 9 x 中执行此操作 例如 我的表包含 Name col1 col2 John 1 2 Walter 1 1 Ron 1 2 我知道想要执行 select 语句 以便从列
  • 如何向非超链接 HTML 标记添加工具提示

    是否有办法向非超链接添加工具提示 IE 我希望当鼠标滑过文本时将鼠标悬停在工具提示上 我希望有一个不基于超链接的工具提示的工作示例 Thanks 如果您所说的工具提示是指title属性 您可以将其应用于许多不同的 HTML 元素 例如spa
  • 任何 Apache HttpClient 4.4 信任自签名证书的示例

    我变了HttpClient版本从旧版本到新版本4 4 并得到了许多已弃用的方法和类 原始代码可以信任自签名证书 我想替换为新方法和类 任何人都可以给我一个如何替换的指南或任何示例代码吗 谢谢 感谢您的回复 我找到了示例代码如下 SSLCon
  • Shinydashboard 标签框高度

    我正在尝试创建一个tabBox横跨整个mainPanel 我能够获得跨越整个屏幕的宽度 但无法获得同样的高度 我不希望使用像素 或其他单位 的绝对值 因为我希望该应用程序能够在不同的屏幕上使用 我玩了这个例子和example http rs
  • 用于图形的 Java 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 用于操作图形 特别是用于社交网络分析 的最佳 Java 库是什么 我见过荣格 但我想知道你是否知道更好的
  • Shadowbox - 打开内联元素

    我正在使用 Shadowbox 和 jQuery 我可以在页面加载时打开它 我想做的是 打开影子框并显示一个表单 用户可以在其中输入他们的电子邮件地址 然后我想通过ajax提交所述表单 我将表单转储到包含在隐藏 div 中的页面上 其 id
  • Apache RewriteRule 将整个 URL 作为参数传递

    目前我的阿帕奇RewriteRule仅将原始 URL 的路径作为查询参数传递给重写的 URL 如何将整个 URL 包括方案和权限等 作为参数发送到重写的 URL I know REQUEST URI 只传递路径 我看不到任何传递整个 URL
  • Asp.Net MVC 4 使用 oAuth2 进行谷歌

    我们正在尝试为现有的 asp net MVC 4 项目启用 使用 google 登录 但现在google已经宣布弃用OpenID 2 0并建议使用OAuth2 我们发现了这个link http www asp net mvc tutoria
  • Aurelia 使可绑定的行为在对象属性上可观察

    在 Aurelia 绑定中 如果在组件中我们对属性使用可观察装饰 并且如果该属性是一个对象 那么我们将订阅该对象的所有属性 例如 import observable from aurelia framework export class C
  • 在 Rust 中,“as”是一个运算符吗?

    Rust 参考目前说了以下内容the as操作员 https doc rust lang org reference html type cast expressions 7 2 12 5 类型转换表达式 类型转换表达式用二元运算符表示as