首页 > 解决方案 > 为什么针对 &Option<_> 的模式匹配会引用包装的值?

问题描述

假设我有以下代码:

fn print_type_of<T>(msg: &str, _: &T) {
    println!("type of {}: {}", msg, std::any::type_name::<T>())
}

fn main() {
    let x: &Option<i32> = &Some(32);
    match x {
        Some(y) => print_type_of("y", &y),
        None => println!("None"),
    };
}

链接到游乐场

你能解释一下为什么程序会打印:type of y: &i32?为什么模式匹配&Option<_>会引用包装的值而不是值本身?

标签: rustpattern-matching

解决方案


推荐阅读