本文介绍了Rust中结构文字中的";..";语法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#[derive(Default)]
struct SomeOptions {
foo: i32,
bar: f32,
}
fn main() {
let options = SomeOptions { foo: 42, ..Default::default() };
}
..
前缀对Default::default()
的返回值有什么影响?为什么这里需要前缀?它看起来几乎像是一个价差操作员,但我不确定。我理解..Default::default()
正在做的事情--用SomeOptions
的缺省值填充剩余的结构参数,但不知道..
是如何工作的。此操作员的名称是什么?推荐答案
这是struct update syntax。只需要有一种简洁的方式将结构的所有成员移动/复制到新的结构中,可能需要进行一些小的修改。
"长"的写法应该是:
let a = SomeOptions::default();
let options = SomeOptions { foo: 42, bar: a.bar };
您确实可以认为它类似于JavaScript的"扩散"运算符,但Rust的所有权和强类型的细微差别仍然发挥作用,因此它没有得到广泛的使用。例如,不能使用此语法在不同类型的值之间切换。
这篇关于Rust中结构文字中的";..";语法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!