Rust 函数
2025年3月6日小于 1 分钟约 286 字
fn add(a: i32, b: i32) -> i32 {
return a + b;
}
fn main() {
let result = add(3, 5);
println!("{}", result); // 8
}
定义函数时,必须指定参数类型和返回值类型。而
return
可省略,当最后一个表达式结尾没有";"时自动返回结果
参数传递:
- Python 默认按引用传递(即变量存的是指针,修改可变对象时影响原始数据)。
- Rust 默认按值传递(数据会被复制,除非使用引用 & 或 &mut 进行借用)。
Rust 宏 vs 函数
特性 | Rust 宏 | Rust 函数 |
---|---|---|
定义方式 | macro_rules! 或 过程宏 | fn 关键字 |
执行时间 | 编译时生成代码 | 运行时 |
参数类型 | 泛型,可匹配不同输入 | 固定类型 |
代码生成 | 可以展开多个代码块 | 只能执行单一逻辑 |
性能影响 | 零开销(编译期展开) | 有调用开销 |
错误处理 | 可能有复杂错误信息 | 明确的编译错误 |
Rust 提供的宏主要有:
macro_rules!
(声明式宏)- 过程宏(Procedural Macros)
- 派生宏(Derive Macros)
- 函数宏(Function-like Macros)
- 属性宏(Attribute Macros)