[Rust] 如何理解 rust 闭包的借用值机制? 被借用的值在闭包内到底是什么类型?

如下最简单的一个闭包代码, 外部 let 定义的 name 类型是 String, 那么根据 rust 闭包的借用值机制, 闭包内使用的 name 是对外部的引用, 那么闭包表达式内的 name 类型应该是 &String 才对, 包括 AI 也是这么回答的. 但是我用 rust 的代码去打印闭包内...
[Rust] 如何理解 rust 闭包的借用值机制? 被借用的值在闭包内到底是什么类型?
[Rust] 如何理解 rust 闭包的借用值机制? 被借用的值在闭包内到底是什么类型?

如下最简单的一个闭包代码, 外部 let 定义的 name 类型是 String, 那么根据 rust 闭包的借用值机制, 闭包内使用的 name 是对外部的引用, 那么闭包表达式内的 name 类型应该是 &String 才对, 包括 AI 也是这么回答的.

但是我用 rust 的代码去打印闭包内的 name 类型, 以及 VSCode rust-lang.rust-analyzer 分析显示 name 类型都是 String.

let name = String::from("hello");

let f1 = || println!("{}", name);

来源: v2ex查看原文