当针对不包含引用的模式匹配参考时会发生什么?
以下是使用结构体模式的示例:
fn main() {
struct S(u32);
let S(x) = &S(2);
// type of x is `&u32`
}
这种行为让我感到惊讶,因为左边的模式似乎与右边的数据不匹配,不像let &S(x) = &S(2)
,其中&
对齐了。
看起来发生的情况是当RHS是结构引用且lhs是带有字段模式的结构模式时,字段模式中变量的类型为&F
,其中F
是字段的类型。
我要寻找的是:
- 解释预期行为的参考资料
- 解释该行为的说明足以概括元组和枚举的情况。例如,在
let (x,) = &(2,);
中,x
的类型是 (更正:&i32
)。
我在 Rust 参考手册和 Rust 书籍中都没有找到相关内容,但是我可能已经错过了。