rust语言常用属性

news/2025/12/5 16:20:25/文章来源:https://www.cnblogs.com/guxuanqing/p/19312665
Rust 语言中的属性(Attributes)是附加到代码(例如模块、函数、结构体、枚举或整个 crate)上的元数据,用于向编译器提供额外信息、指示编译器执行特定操作,或启用某些功能。
属性以 #[attribute_name](表示该属性作用于紧接着它的下一个声明项(Item Declaration) #! [attribute_name](应用于包含它的项目,如模块或 crate 根目录)的形式出现。也就是说有感叹号的属性作用于该rs文件,而没有感叹号的仅作用于紧邻的下一个声明项。
 
以下是一些 Rust 中最常用和重要的属性:

1. 自动实现 Trait

这是日常 Rust 编程中使用最频繁的属性之一。它指示编译器自动为你的类型生成 Trait 的实现代码。
 
属性作用常用 Traits
#[derive(...)] 自动为类型实现指定的 Trait DebugCloneCopyPartialEqEqHashDefault
示例:
#[derive(Debug, Clone, PartialEq)]
struct Point {x: i32,y: i32,
}

2. 测试与条件编译

用于控制代码的编译方式,特别是用于测试代码。
 
属性作用
#[test] 标记一个函数为测试函数。
#[cfg(...)] 控制是否编译其所附着的代码块。
#[cfg(test)] #[cfg] 的一种常见用法,仅在运行测试时编译代码。
#[ignore] 在运行测试时忽略此测试用例。
示例:
#[cfg(test)] // 整个模块只在测试时编译
mod tests {#[test] // 这是一个测试函数fn it_works() {assert_eq!(2 + 2, 4);}
}

3. 控制编译器行为(Linting)

用于抑制或启用特定的编译器警告或错误。
 
属性作用
#[allow(...)] 允许指定的警告(忽略它)。
#[warn(...)] 将指定的警告级别设置为警告。
#[deny(...)] 将指定的警告级别提升为错误。
#[forbid(...)] 比 deny 更严格,不允许任何绕过的方式。
示例:
// 允许使用未使用的变量警告,只针对这个函数
#[allow(unused_variables)] 
fn my_function(x: i32) {let y = 10; // y 不会触发警告
}

4. 宏相关

用于定义和导出自定义宏。
 
属性作用
#[macro_export] 使声明式宏 (macro_rules!) 可以在其他 crate 中使用。
#[proc_macro] 标记一个函数为过程宏(需要单独的 crate)。
示例:
#[macro_export]
macro_rules! my_macro {() => { println!("Hello!"); };
}

5. FFI(外部函数接口)相关

在与 C 或其他语言进行交互时,这些属性非常关键。
 
属性作用
#[no_mangle] 告诉编译器不要“混淆”此函数的名称,使其可以被外部 C/C++ 代码找到。
#[repr(C)] 强制结构体使用 C 语言兼容的内存布局。
#[link(...)] 链接到外部库。
#[export_name = "..."] 为函数指定一个特定的导出名称。
示例:
#[no_mangle]
pub extern "C" fn call_from_c() {// ...
}#[repr(C)]
struct CStruct {field1: u32,field2: f64,
}

6. 优化与文档

 
属性作用
#[inline] 建议编译器进行函数内联优化。
#[doc = "..."] 文档注释的底层属性。
示例:
#[inline(always)] // 强制编译器始终内联此函数
fn get_zero() -> i32 {0
}
 
 

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

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

相关文章

两分钟看懂:BL118 为什么特别适合储能行业?

这两年,储能行业进入了“快车道”:从工商业储能、光储一体机,到大规模电网侧储能,设备数量爆发式增加。与此同时,一个被频繁提起的问题是:储能系统到底需不需要边缘计算网关?更直接一点——钡铼技术 BL118 Node…

2025年中国电解式臭氧发生器生产厂家推荐:BDD金刚石涂层

随着环保、医疗等领域对高效消毒设备需求的激增,电解式臭氧发生器凭借无二次污染、浓度可控等优势逐渐成为市场主流,而BDD金刚石涂层电极作为其核心部件,直接决定设备性能。本榜单基于技术实力、产品稳定性、行业口…

AI一周资讯 251129-251205

原文: https://mp.weixin.qq.com/s/dutPyteGCa9staazBion8A?scene=1&click_id=7 OpenAI拉响“红色警报”,下周推新模型硬刚Gemini 3 pro 2025年12月2日,面对Google等竞争对手的压力,OpenAI拉响“红色警报”,决…

高性价比家政服务公司推荐,广州喜相缘家政实力上榜

在现代社会,随着生活节奏的加快,人们对家政服务的需求日益增长。然而,市场上家政服务公司众多,服务质量参差不齐,价格也高低不一。如何挑选一家高性价比、靠谱的家政服务公司成为了许多消费者的难题。今天,我们就…

深入解析:redis怎么处理并发——redis高并发处理的5个最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025企业家必读:从“信息孤岛”到“知识银行”,私有化AI知识库如何重塑企业竞争力?

2025年,某头部制造企业CEO在战略会上抛出一个问题:“我们每年投入2亿研发费用,沉淀的技术文档、工艺经验为何无法快速复制到新工厂?”这个问题戳中了无数企业家的痛点——在数字化时代,知识已成为比资金、设备更核…

2025年AI知识库本地化部署厂商全景扫描:如何把大模型装进企业“保险箱”

2025年,数据跨境流动监管趋严,通用大模型幻觉、延迟、泄露风险频上热搜,“AI知识库本地化部署厂商”一夜之间成为企业CIO、CSO、CTO搜索框里的常驻长尾词。谁能在本地机房交付一套“能用、敢用、长用”的企业级知识…

2025年苏州地区知名的西点培训学校推荐:有实力的西点培训机

本榜单依托苏州、常州、无锡、南通四地市场调研与真实学员口碑,深度筛选出五家标杆西点培训企业,为西式餐饮追梦人提供客观选型依据,助力精准匹配适配的技能提升伙伴。 TOP1 推荐:苏州欧米奇西点西餐学院 推荐指数…

从结构化到多模态,AI 时代如何利用多模态数据智能中台激活业务价值?

近日,AI “顶流” 学者李飞飞的最新长文《从语言到世界:空间智能是人工智能的下一个前沿》刷屏时,整个科技圈再次被 “升维” 的焦虑击中。她指出,AI 的下一个前沿是 “空间智能”—— 让 AI 真正理解和交互物理世…

2025年苏州地区信誉好的西餐培训学院推荐TOP5,专业西餐

在餐饮行业多元化发展的当下,西餐以其精致的工艺与独特的文化魅力,成为众多美食爱好者与创业者的聚焦领域。选择一家专业的西餐学院培训机构,是掌握正统技艺、打开职业大门的关键。面对市场上良莠不齐的培训选项,如…

Open webUI ollama图形界面的更新与实现

对于安装在 Docker 容器中的应用程序,最推荐和最标准的更新方法是拉取新的镜像并重建/重启您的容器。以下是使用 Docker Compose(如果您用它来管理 Open WebUI)或标准 Docker CLI 的更新步骤。🛠️ Docker Open W…

2025.12 做题记录

。本文来自博客园,作者:2021zjhs005,转载请注明原文链接:https://www.cnblogs.com/2021zjhs005/p/19312654

2025 年陶瓷喷涂源头厂家最新推荐榜,聚焦技术实力与市场口碑深度解析涡轮叶片陶瓷喷涂/半导体腔体陶瓷喷涂/锅炉管道耐高温陶瓷喷涂/阀门陶瓷喷涂公司推荐

引言 在工业生产领域,机械设备零部件的磨损、腐蚀、高温损耗等问题,始终是影响生产效率与设备寿命的关键因素。随着泵业、石油化工、汽车制造、钢铁等行业快速发展,对零部件表面处理要求不断提升,陶瓷喷涂凭借耐磨…

Java 在 Windows 系统配置 Path 环境变量(适配 JDK 8/11/17+,含 Win10/11 通用步骤)

配置 Path 的核心目的是让 Windows 全局识别 java、javac 等命令,无需每次输入完整 JDK 路径,以下是分步实操指南: 一、前置准备:确认 JDK 安装路径先安装 JDK(推荐官网下载对应版本:Oracle JDK 或 OpenJDK); …

关于幼儿园STEM课程设计的思考

幼儿园STEM教育是以3-6岁儿童学习与发展规律为基础,融合科学(Science)、技术(Technology)、工程(Engineering)、数学(Mathematics)跨学科理念的综合教育模式,核心目标是通过游戏化、生活化、项目化的学习方式…

2025年泥浆土压变送器工厂权威推荐榜单:泥浆油脂压力变送器‌/盾构机土压变送器‌/盾构油压变送器‌‌源头工厂精选

在隧道盾构、石油钻井、地质勘探等涉及泥浆介质的核心工业领域,压力测量设备的可靠性直接关系到施工安全、设备寿命与作业效率。泥浆土压变送器,作为在上述高磨损、强冲击工况下连续工作的关键传感器,其技术要求远高…

2025年知识库本地化部署厂商:企业智能安全升级的核心路径

在数字化转型深化的2025年,金融、医疗、制造等行业企业对知识管理的需求日益迫切,同时数据安全合规压力也持续攀升。《智能驱动增长:人工智能客户关系管理(AI CRM)系统研究报告》(2025)指出,78%的受访企业将“…

阵列信号处理中的自适应波束形成技术

自适应波束形成技术:线性最小方差准则与切比雪夫窗处理 基本原理 自适应波束形成技术通过调整阵列天线的加权系数,使主瓣指向期望信号方向,同时在干扰方向形成零陷。线性最小方差准则(LMS或LCMV)通过最小化输出功…

微信小程序开发公司怎么选?稳定运维服务商考察指南:硬件小程序/名片小程序/商城小程序/物联网小程序多领域全涵盖小程序开发公司推荐

在数字化转型加速推进的当下,微信小程序凭借轻量化、高触达、低门槛的优势,已成为企业链接用户、拓展业务场景的重要载体。无论是线下实体的线上引流、电商平台的轻量化交易,还是服务行业的预约核销,小程序都能精准…

Flutter部件出场即动画,不显示时不占用空间不占内存

/// flutter_animate 插件if (show)Container(width: 200,height: 100,color: Colors.orange,child: Center(child: Text(flutter_animate)),).animate().fadeIn() // uses `Animate.defaultDuration`.scale() // inhe…