当地人喜欢在caml

x4r*_*rkz 1 rust

我正在尝试学习Rust语言及其编码风格.我想使用几个独立的变量,但是使用来自函数的相同值进行初始化f:

let (mut a, mut b) = (f(), f());
Run Code Online (Sandbox Code Playgroud)

但是,它调用f两次,所以最好这样做:

let mut a = f()
let mut b = a
Run Code Online (Sandbox Code Playgroud)

有可能像caml一样在一行中完成吗?

let (a,b) = (c,c) where c = f()
(* or *)
let c = f() in let (a,b) = c;
Run Code Online (Sandbox Code Playgroud)

Fra*_*gné 8

您可以使用块来引入具有受限范围的变量.

let (mut a, mut b) = { let c = f(); (c, c) };
Run Code Online (Sandbox Code Playgroud)

或者,更清晰:

let (mut a, mut b) = {
    let c = f();
    (c, c)
};
Run Code Online (Sandbox Code Playgroud)

块是表达式,它们计算到它们体内的最后一个表达式,除非该表达式后跟分号,在这种情况下块的计算结果为().