Rust中结构文字中的".."语法是什么? [英] What is the ".." syntax inside a struct literal in Rust?

查看:18
本文介绍了Rust中结构文字中的".."语法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自std::default::Default文档:

#[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中结构文字中的".."语法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆