kyonn
V2EX  ›  Rust

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

  •  
  •   kyonn · 2h 47m ago · 206 views

    如下最简单的一个闭包代码, 外部 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);
    
    
    3 replies    2026-05-14 15:51:24 +08:00
    xtreme1
        1
    xtreme1  
       2h 45m ago
    warning: unused variable: `name`
    kyonn
        2
    kyonn  
    OP
       2h 41m ago
    @xtreme1 不好意思, 之间主题没编辑完整就发出来了.
    kyonn
        3
    kyonn  
    OP
       2h 14m ago
    ```rust
    fn print_type<T>(_: &T) {
    println!("{:?}", std::any::type_name::<T>());
    }
    ```

    打印类型用的这个辅助函数
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4702 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
    ♥ Do have faith in what you're doing.