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

Rust函数传参时传递引用的引用是否会发生自动解引用?

问题解答:Rust传参时的自动解引用问题

结论

你描述的场景确实触发了Rust的*自动解引用强制转换(Deref coercion)*机制。

原理说明

  • 首先明确变量类型关系:已知d是指向堆上数据9的引用,类型为&i32;e是指向d的引用,类型为&&i32。
  • 若baz函数的参数f声明的类型为&i32,当你把类型为&&i32的e作为参数传入时,Rust编译器会自动对e做一次解引用操作,将&&i32转换为参数要求的&i32类型,因此f最终拿到的是d指向的堆数据地址,而非e本身存储的d的栈地址。
  • 这种自动转换是编译期完成的,没有额外运行时开销,效果等价于你手动传*e作为参数。

参考图示

img01
img02

内容的提问来源于stack exchange,提问作者Ranian Liu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:03