当前位置: 首页 > news >正文

rust语言常用属性

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.zskr.cn/news/73259.html

相关文章:

  • AI一周资讯 251129-251205
  • 高性价比家政服务公司推荐,广州喜相缘家政实力上榜
  • 2025年AI知识库本地化部署厂商全景扫描:如何把大模型装进企业“保险箱”
  • 从结构化到多模态,AI 时代如何利用多模态数据智能中台激活业务价值?
  • 2025年苏州地区信誉好的西餐培训学院推荐TOP5,专业西餐
  • 2025年泥浆土压变送器工厂权威推荐榜单:泥浆油脂压力变送器‌/盾构机土压变送器‌/盾构油压变送器‌‌源头工厂精选
  • 2025年知识库本地化部署厂商:企业智能安全升级的核心路径
  • 阵列信号处理中的自适应波束形成技术
  • Flutter部件出场即动画,不显示时不占用空间不占内存
  • C# 深浅拷贝、值类型、引用类型浅析
  • 2025 美国 EOR 名义雇主推荐:Safeguard Global人力资源服务专家
  • 交通事故法律服务口碑排名 2026:权威解析专业机构选择指南
  • 【GitHub】安装以及配置远程仓库 - zhiao
  • 2025年安全隔离栅优质仪器五大厂家推荐,工业自动化防护设备
  • 2025年全屋定制源头工厂实力排名,精选全屋定制制造厂推荐
  • 2025年江浙沪网带炉实力供应商TOP5排行榜,专业网带炉厂
  • KFD 驱动如何管理 Compute Queue(计算队列)
  • 2025年12月一物一码公司排名深度解析
  • 2026助力发刊:深度学习MOF材料专题学习 - 教程
  • 2025 年 12 月黔南刺梨原浆,贵州刺梨原液最新推荐,产能、专利、环保三维数据透视!
  • 2025年取暖器品牌权威推荐榜单:壁挂炉/制热中央空调/制暖空调品牌精选
  • 2025 年淮安装修公司最新推荐榜,聚焦企业服务能力、施工品质与市场口碑深度解析淮安半包,淮安整装,淮安全屋定制,淮安系统门窗,淮安全屋设计装修公司
  • 2025年度康养旅居楼盘TOP5权威推荐:聚焦医疗配套与服务
  • 2025年度园区智慧食堂服务商TOP5权威推荐:赋能食堂数字
  • 2025年饮品行业必备:纸咖啡杯制造机如何帮您降低成本、塑造品牌?
  • yuv转rgb的bat脚本
  • 2025 年四川特产厂家最新推荐榜,聚焦企业原料把控、工艺创新与市场口碑深度解析广味四川特产,下火锅的四川特产,重庆麻辣四川特产,台式四川特产,老字号四川特产,地道四川特产公司推荐
  • 2025年中国补光灯品牌排名:补光灯品牌哪个口碑好
  • 深入解析:【车载以太网】以太网硬件
  • 2025年上海教育机构环氧地坪漆施工公司排名