我不太了解 Rust 中“声明”和“定义”的定义。Rust 参考文献说结构体字段按声明顺序删除。这是否意味着按照结构最初创建时的顺序{?定义/声明?},
struct Example {
x: i32,
y: i32,
}
Run Code Online (Sandbox Code Playgroud)
或者当值实际添加到结构体 {?definition/declaration?} 时(其顺序可以与原始创建的顺序不同),
fn foo -> Example {
Example {
y: 43,
x: 42,
}
}
Run Code Online (Sandbox Code Playgroud)
我不清楚哪一个是声明,哪一个是定义。
我试图在 y 掉落时打印一条消息,但我的代码无法编译。
我认为 Rust 中的结构体两者之间没有区别。
在某些语言(如 C )中,声明类型存在(“有某种名为Example”的类型)和定义该类型的结构(“名为的类型Example具有字段x和y”)之间可能存在差异。然而,Rust 中没有语法将它们分开,它们是同一个。Rust Reference和Rust Book似乎更喜欢将其称为“定义”,尽管析构函数的文档说得对,“结构体的字段按声明顺序删除”。
“声明的顺序”是您在结构定义中看到的内容。从而x之前就会被丢弃y。后一个示例是实例化一个结构体,如果文档意味着它会调用它“实例化顺序”、“初始化顺序”或类似的名称。
以上并不是说 Rust 中不存在这种区别,只是在结构方面不存在:
let a; a = 5有效),尽管通常称为“初始化”而不是“定义”,但无论哪种方式您都会被理解。| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |