gpt4 book ai didi

rust - 为什么结构实例化的花括号没有定义作用域?

转载 作者:行者123 更新时间:2023-12-03 11:38:47 24 4
gpt4 key购买 nike

我有以下代码令我感到惊讶:

struct S<'a> {
value: &'a String,
}

fn foo(s: &S) {
println!("{}", s.value);
}

#[allow(dead_code)]
fn main() {
let s = S {
value: &String::from("ABC"),
};
foo(&s);
}
如果看到一对花括号,我会将它们想象为一个示波器。因此,对于我来说, S { value: &String::from("ABC") };行以及更重要的是花括号之间的部分代表一个范围。在此作用域内,将创建一个匿名字符串并对其进行引用。大括号关闭后,字符串应该被销毁,下一行 foo(&s)应该告诉我一些有关生存期的信息,但是事实并非如此!为什么?

最佳答案

在Rust中,结构的花括号不表示作用域,而仅表示结构的字段。就像在调用宏时如何使用花括号一样,但是这些花括号不会创建作用域。如果他们确实创建了范围,那将带来极大的不便,因为您无法执行&String::from("ABC")之类的操作。

关于rust - 为什么结构实例化的花括号没有定义作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64337540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com