Rust中是否定义了函数参数的求值顺序?
fn f(a: u64, b: u64, c: u64) {}
fn g() -> u64 { 0 }
fn h() -> u64 { 1 }
fn i() -> u64 { 2 }
fn main() {
f(g(), h(), i());
}
此外,我担心结构体的初始化顺序:
Also, I am worried about the initialization order of structs:
返回结果为:此外,我担心结构体的初始化顺序:
fn f() {}
fn g() {}
A {
a: f(),
b: g(),
}
订单保证是先是a
,然后才是b
吗?
对于我的特定用例,我将在diesel
事务中初始化一个struct,如下:
db_connection.transaction(||
Ok(CompanyAndUser {
company: companies::register_company(...)?, // performs diesel insert
user: users::register_user(...)?, // performs diesel insert
})
);
很明显,我希望在交易中这两个柴油呼叫的顺序是有序的。
不幸的是,我没有找到任何相关信息。此外,我发现一些相关信息,但它们都很旧了。
struct A { a: u8, b: u8 }
结构体,并且你写了A { a: a(), b: b() }
,那么顺序是a()
然后是b()
。如果你写了A { b: b(), a: a() }
,那么顺序是b()
然后是a()
。 - zrzka