gpt4 book ai didi

rust - Rust 中函数参数评估和结构初始化的顺序是什么?

转载 作者:行者123 更新时间:2023-11-29 07:42:52 27 4
gpt4 key购买 nike

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());
}

此外,我担心结构的初始化顺序:

fn f() {}
fn g() {}

A {
a: f(),
b: g(),
}

顺序是否保证是a然后是b

对于我的特定用例,我将在 diesel 事务中初始化一个结构,如下所示:

db_connection.transaction(||
Ok(CompanyAndUser {
company: companies::register_company(...)?, // performs diesel insert
user: users::register_user(...)?, // performs diesel insert
})
);

显然,我希望对交易中的这两个 diesel 调用进行排序。不幸的是,我还没有找到有关此的任何信息。此外,我发现了一些或多或少相关的信息,但它已经很老了。

最佳答案

顺序以前是未指定的,但现在是left-to-right :

Many expressions contain sub-expressions, called the operands of the expression.

和:

The operands of these expressions are evaluated prior to applying the effects of the expression. Expressions taking multiple operands are evaluated left to right as written in the source code.

关于rust - Rust 中函数参数评估和结构初始化的顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612141/

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