Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Rust中执行就地作业? 在C++中,我可以在将变量打印为“屏幕”:时,在变量赋值>代码> var >代码中执行适当的赋值。 int-var=5; std::cout_Rust - Fatal编程技术网

如何在Rust中执行就地作业? 在C++中,我可以在将变量打印为“屏幕”:时,在变量赋值>代码> var >代码中执行适当的赋值。 int-var=5; std::cout

如何在Rust中执行就地作业? 在C++中,我可以在将变量打印为“屏幕”:时,在变量赋值>代码> var >代码中执行适当的赋值。 int-var=5; std::cout,rust,Rust,Rust中的赋值运算符不计算赋值;它们的计算结果为()。因此,您需要在赋值后读取变量以获得新值。可以对块执行此操作,因为块也是表达式 let mut counter = 0; println!("{}", { counter += 1; counter }); 如果你要经常这样做,请考虑定义宏: macro_rules! inc { ($e:expr) => { { $e += 1; $e } } } let mut counter = 0; print

Rust中的赋值运算符不计算赋值;它们的计算结果为
()
。因此,您需要在赋值后读取变量以获得新值。可以对块执行此操作,因为块也是表达式

let mut counter = 0;
println!("{}", { counter += 1; counter });

如果你要经常这样做,请考虑定义宏:

macro_rules! inc {
    ($e:expr) => {
        { $e += 1; $e }
    }
}

let mut counter = 0;
println!("{}", inc!(counter));

最短的解决方案是返回以下值:

let mut counter = 0;
println!("{}", {counter += 1; counter});
但老实说,我想说这不是惯用的锈迹,你不妨把它写在另一行:

let mut counter = 0;
counter += 1;
println!("{}", counter);

较长的答案是您无法获得赋值的值。的特征定义为

pub trait AddAssign<Rhs = Self> {
    fn add_assign(&mut self, Rhs);
}
可以通过返回引用来修复:

println!("{}", {string += "a"; &string});
但在这一点上,没有什么真正的“储蓄”要做

let mut string = String::new();
println!("{}", {string += "a"; string});
println!("{}", string); // use of moved value: `string`
println!("{}", {string += "a"; &string});