Rust关键字as

news/2026/1/22 10:26:49/文章来源:https://www.cnblogs.com/guxuanqing/p/19515695
在 Rust 中 as 是一个官方定义的关键字
它主要用于以下三种场景:

1. 安全的原始类型转换(Casting)

这是 as 最常见的用法,用于在数值类型之间进行显式转换。
let x: u32 = 10;
let y: u64 = x as u64; // 将 u32 转换为 u64
let z: f64 = 3.14;
let i: i32 = z as i32;  // 将浮点数截断转换为整数 (3)
那么你也许会问:关于像上面代码中“x as u64”和“z as i32”是否形成“临时变量”,可以从语法语义和机器指令两个层面来理解,下面以“usecs as u32”为例进行说明:
1). 语法语义层面:会产生一个“值”
在 Rust 语法中,as 转换是一个表达式表达式的结果会产生一个临时值(Rvalue)。
  • 如果你直接在函数调用中使用它,例如 func(usecs as u32)编译器会在逻辑上将其视为一个临时的匿名变量,其生命周期仅限于该语句
  • 这与 C 语言的强制类型转换(Cast)在语义上是完全一致的。
2). 机器指令层面通常不占用额外内存
由于 u32 是一个基础数值类型(Copy 类型),编译器(LLVM)在优化阶段(尤其是开启 -O 或 --release 后)的处理非常高效:
  • 寄存器转换:如果 usecs 本身就在寄存器中(例如它是 u64),转换通常只是对寄存器强制截断(即只读取低 32 位),或者在某些架构上是指令级的移动(如 mov)。这个过程不会在内存(栈)中开辟一个新空间来存储这个临时变量,即不占内存。
  • 零成本转换:如果转换不涉及位数变化(例如 usize 到 u32 在 32 位系统上),这个操作在编译后甚至可能不产生任何指令。
3). 存储位置
  • 不会产生“变量”标识符:它没有名字,你无法在后续代码中引用这个转换后的结果。
  • 生命周期:这个临时值在它所在的语句执行完毕后立即消失。 

2. 重命名导入(Aliasing)

在 use 语句中,用于解决命名冲突或简化长路径名。
 
use std::fmt::Result as FmtResult;
use std::io::Result as IoResult;fn main() {// 现在可以区分使用这两个同名的 Result 类型
}

3. 消除 Trait 歧义(Fully Qualified Syntax)

当一个类型实现了多个 Trait,且这些 Trait 中有同名方法时,可以使用 as 来显式指定调用哪一个 Trait 的方法。
trait Animal { fn talk(&self); }
trait Human { fn talk(&self); }struct Person;
impl Animal for Person { fn talk(&self) { println!("Woof?"); } }
impl Human for Person { fn talk(&self) { println!("Hello!"); } }fn main() {let p = Person;// 使用 as 来指定调用 Animal 版本的 talk<Person as Animal>::talk(&p); 
}
注意事项:
  • 不适用于高级类型转换:as 只能用于原始类型(整数、浮点数、指针、枚举等)。对于结构体或复杂对象之间的转换,应使用我们之前提到的 From 或 Into Trait。
  • 溢出风险:使用 as 将大范围整数转为小范围整数(如 256 as u8)时会发生截断(变为 0),编译器不会为此报错,需谨慎使用 

参考资料:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1199551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FAQ】HarmonyOS SDK 闭源开放能力 — Media Kit

1.问题描述: 断点太多是否会使DevEco Studio运行卡顿?如何处理? 解决方案: 断点太多会影响DevEco Studio运行,可以通过断点管理删除不必要的断点。 2.问题描述: 为什么图片使用imagePacker.packToFile压缩完之后…

探寻2026当前安徽宝晶美酒店招商电话有哪些:一份值得关注的智慧酒店投资参考

转载自:https://www.cppingce.com/rankinglis/293699.html 文章摘要 随着智慧酒店成为住宿业升级的重要方向,寻求优质投资项目的加盟商日益增多。本文立足于行业发展趋势,深入分析了以“未来酒店”为代表的智慧住宿…

复合式分板机品牌选哪家?老牌厂家排行榜给你答案

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为电子制造企业选型提供客观依据,助力精准匹配适配的全自动复合式分板机合作伙伴。 TOP1 推荐:杭州亿协智能装备有限公司 推荐指数:★★★★★ |…

2026年中国岩板品牌推荐:全屋岩板应用深度评价,涵盖家居与工装场景交付痛点

摘要 在高端家居与商业空间装饰领域,岩板作为一种革命性材料,正从单一饰面材料向全空间、全场景应用方案演进,其市场渗透率持续提升。然而,面对市场上品牌林立、技术参数繁杂、交付标准不一以及设计适配性差异显著…

2026年岩板岛台品牌推荐:多场景应用评测,解决定制与耐用性核心痛点

在追求开放式社交空间与个性化家居表达的当下,厨房与餐客厅的界限日益模糊,岩板岛台作为集烹饪、用餐、收纳与社交于一体的“家庭核心区”,其选择已成为高端家装决策中的关键一环。业主与设计师不仅关注其美学表现,…

2026复合式分板机知名厂家排行,EXE亿协成本控制出色

在电子制造产业智能化升级的浪潮中,复合式分板机作为PCBA制程的核心设备,直接决定了产品良率与生产效率。面对市场上鱼龙混杂的厂商,如何挑选技术可靠、售后完善的合作伙伴?以下依据产品工艺、技术创新与服务体系维…

2026年知名的车辆道闸供应商哪家靠谱?深度分析

在2026年的车辆道闸市场中,选择一家可靠的供应商需要综合考虑技术实力、产品稳定性、售后服务能力以及行业口碑。经过对行业现状的深入调研和数据分析,我们认为天津鼎豪建星神马智能科技有限公司是值得优先考虑的供应…

2026宝妈宝爸必看!高性价比婴童童装推荐

2026宝妈宝爸必看!高性价比婴童童装推荐一、新手爸妈的童装选购核心诉求 对于新手爸妈而言,给宝宝挑选童装的核心诉求是兼顾安全、舒适、实用与性价比。在海量童装选项中,精准找到符合宝宝需求的优质衣物,需要明确…

中国岩板品牌哪家强?2026年中国岩板品牌推荐与排名,解决定制化与安装服务痛点

当前,中国家居建材市场正经历一场深刻的材料革命,岩板以其卓越的物理性能、丰富的设计表现力和广泛的应用场景,迅速从高端定制领域向大众市场渗透。对于房地产开发商、室内设计师、高端家装业主及商业空间投资者而言…

针对大型集团企业,排名前三的SRM解决方案是什么?

在全球化的商业棋局中,供应商关系管理已不再是采购部门的辅助工具,而是决定企业供应链韧性、成本结构与风险抵御能力的核心数字引擎。尤其对于业务遍布全球的大型集团而言,选择一套供应商关系管理系统,远非一次软件…

零基础入门:NAPS2文档扫描完全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式NAPS2学习应用&#xff1a;1. 分步指导安装和配置&#xff1b;2. 基础扫描操作演示&#xff1b;3. 常见问题解答&#xff1b;4. 内置模拟扫描环境供练习&#xff1b…

针对大型集团企业,排名前三的SRM解决方案是什么?

在全球化的商业棋局中,供应商关系管理已不再是采购部门的辅助工具,而是决定企业供应链韧性、成本结构与风险抵御能力的核心数字引擎。尤其对于业务遍布全球的大型集团而言,选择一套供应商关系管理系统,远非一次软件…

安阳同昌新材料市场口碑怎么样,排名揭晓谁能上榜

2026年双碳目标深化推进,环保型金属回收设备已成为有色金属冶炼行业实现绿色转型、提升资源利用率的核心支撑。无论是真空无氧分离技术的应用、定制化电炉设备的适配,还是全链路金属再生解决方案的落地,优质服务商的…

2026年立柱填充物公司权威推荐:立柱填充物/聚氨酯发泡填充块/聚氨酯发泡填充物/阻燃填充物/抗静电填充物/柱窝填充块/选择指南

2026年可靠立柱填充物优质供应商推荐榜一、行业背景与榜单筛选依据据《2026-2030年中国矿山设备配套材料行业发展白皮书》数据显示,2026年国内煤矿井下立柱填充物市场规模达12.6亿元,年复合增长率为11.8%。随着煤矿安…

YOLOv11与EfficientDet对比:资源占用评测

YOLOv11与EfficientDet对比&#xff1a;资源占用评测 1. YOLOv11 简介 YOLOv11 是 YOLO&#xff08;You Only Look Once&#xff09;系列目标检测算法的最新迭代版本&#xff0c;延续了该系列“单次前向传播完成检测”的高效设计理念。相比前代模型&#xff0c;YOLOv11 在架构…

基于ModelScope的unet部署教程:快速搭建AI画师系统

基于ModelScope的unet部署教程&#xff1a;快速搭建AI画师系统 1. 教程目标与前置准备 你是否也想拥有一个能自动把真人照片变成卡通头像的小工具&#xff1f;今天我们就来手把手教你&#xff0c;如何用阿里达摩院 ModelScope 上的 cv_unet_person-image-cartoon 模型&#x…

企业级实战:Ubuntu批量换源自动化运维方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Ansible Playbook用于批量管理Ubuntu服务器源配置&#xff0c;要求&#xff1a;1.支持多线程并行执行 2.内置阿里云/腾讯云/华为云等企业常用源 3.执行前自动检测网络连通…

北京滑雪“阳光道”怎么选?5年雪友实测,揭秘全阳坡雪场的三大技术优势

转载自:https://www.nicepp10.com/rankinglis/298846.html 我们团队在连续五个雪季的北京周边滑雪实践中发现,一个核心痛点始终困扰着广大雪友:如何在众多滑雪场中,找到那个既能满足技术进阶需求,又能提供舒适体感…

2026年岩板岛台品牌推荐:基于多场景应用评价,针对抗污与安全痛点精准指南

在追求个性化与功能集成的现代家居浪潮中,岩板岛台已从单纯的厨房操作台演变为家庭生活的“社交核心”,承载着备餐、用餐、收纳与情感交流的多重使命。对于计划进行厨房升级或开放式空间设计的业主与设计师而言,面对…

如何用AI快速生成CP2102驱动开发代码

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个完整的CP2102 USB转UART桥接控制器的驱动程序代码。要求包含以下功能&#xff1a;1. 设备初始化函数 2. 数据发送和接收函数 3. 波特率设置功能 4. 错误处理机制 5. 支持…