struct - Rust 中是否保证了初始化结构字段的顺序?
问题描述
我在Constructors - The Rustonomicon中找不到对此的任何引用。是不是保证下面的代码……</p>
struct Mutates {
n: usize,
}
impl Mutates {
fn side_effects(&mut self) -> usize {
self.n += 1;
self.n
}
}
#[derive(Debug)]
struct Struct {
a: usize,
b: usize,
}
fn main() {
let mut m = Mutates { n: 0 };
// note the order of the fields
dbg!(Struct {
a: m.side_effects(),
b: m.side_effects(),
});
dbg!(Struct {
b: m.side_effects(),
a: m.side_effects(),
});
}
…总是会打印以下内容?
[src/main.rs:22] Struct{a: m.side_effects(), b: m.side_effects(),} = Struct {
a: 1,
b: 2,
}
[src/main.rs:26] Struct{b: m.side_effects(), a: m.side_effects(),} = Struct {
a: 4,
b: 3,
}
还是编译器可以分配不同的值?
请注意,问题是关于字段的初始化顺序,而不是声明。
请注意,这个问题是专门询问结构而不是元组,这是由Rust 中元组的评估顺序是什么来回答的?.
解决方案
推荐阅读
- javascript - React setState() 在多个智能组件中无法正常工作
- php - 在 Laravel 中查看如何对 URL 进行 json_decode
- http - HttpContext.Current.Request.Browser.MajorVersion 将 IE11 显示为 IE7
- html - 无法垂直居中 Bootstrap 3 媒体
- c++ - #SQLite This query statement does not work as I thought. What should I do
- android - Progress dialog in Multipart Upload Request
- java - Problem to insert new user to DB after checking if email exist sqlite
- c# - 当另一个窗体关闭时以一个窗体执行代码
- c++ - Passing object from another class to a constructor of the other in C++?
- sql - In a reversely linked list, how to get a sublist of it efficiently?