Rust语言中->(细箭头)符号的含义是什么?
Rust 中的
-> 符号详解 核心作用:表示类型归属或返回值
Rust 里的 -> 主要有两个核心场景,结合你熟悉的 ObjC/JS 来类比会更容易理解:
1. 函数/方法的返回值声明
在函数签名里,-> 用来明确函数执行后返回值的类型,这和 ObjC 里的返回类型声明、JS 里的 TypeScript 返回类型注解逻辑一致,只是语法不同。
比如:
// 接收两个i32,返回i32类型的和 fn add(a: i32, b: i32) -> i32 { a + b }
阅读的时候可以直接翻译成:“定义一个名为add的函数,参数a和b都是i32类型,返回i32类型的值”。
对比你熟悉的语言:
- ObjC 里是放在方法名前面:
- (NSInteger)add:(NSInteger)a to:(NSInteger)b; - JS(TS)里是用冒号:
function add(a: number, b: number): number { return a + b; }
2. 解引用指针/智能指针的类型访问
当你使用指针(比如&T)或者智能指针(比如Box<T>)时,-> 用来访问指针指向对象的类型或成员,这和 ObjC 里的->(访问实例变量)、C 里的指针访问逻辑类似,Rust 里甚至可以用.自动解引用,但显式写->的时候也很常见。
比如:
struct User { name: String, } fn main() { let user = User { name: "Alice".to_string() }; let user_ptr = &user; // 用->访问指针指向对象的name字段 println!("{}", user_ptr->name); // 等价于自动解引用后的 . 访问 println!("{}", (*user_ptr).name); }
阅读这里的user_ptr->name时,可以理解为:“指针user_ptr指向的对象的name字段”。
阅读时的小技巧
- 看到函数签名里的
->,直接读成“返回”; - 看到指针/智能指针后的
->,读成“指向的对象的”; - 不用死记语法规则,结合代码上下文判断是返回值还是指针访问即可——函数签名里的一定是返回值,变量后面的基本都是指针访问。
内容的提问来源于stack exchange,提问作者GPP
相关产品推荐
相关产品推荐

