Определен ли порядок вычисления аргумента функции в 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
})
);
Очевидно, я хочу заказать эти два дизельных звонка в рамках транзакции. Я не нашел никакой информации об этом, к сожалению. Кроме того, я нашел более или менее актуальную информацию, но она была довольно старой.