You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:02:57