首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是"..“Rust中struct文字中的语法?

什么是"..“Rust中struct文字中的语法?
EN

Stack Overflow用户
提问于 2018-01-23 03:39:33
回答 1查看 7.9K关注 0票数 18

std::default::Default文档中:

代码语言:javascript
运行
复制
#[derive(Default)]
struct SomeOptions {
    foo: i32,
    bar: f32,
}

fn main() {
    let options = SomeOptions { foo: 42, ..Default::default() };
}

..前缀对Default::default()的返回值有什么影响?为什么这里需要它?它看起来就像是一个扩散运算符,但我不确定。我知道..Default::default()在做什么--用SomeOptions的默认值填充剩余的结构参数,但不知道..是如何工作的。这个操作员的名字是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 03:49:27

这是struct update syntax。它“需要”的只是有一种简洁的方式将一个结构的所有成员移动/复制到一个新的结构中,可能需要做一些小的修改。

写这段代码的“长”方法是:

代码语言:javascript
运行
复制
let a = SomeOptions::default();
let options = SomeOptions { foo: 42, bar: a.bar };

您确实可以认为它类似于JavaScript的“扩展”运算符,但是Rust的所有权和强类型的细微差别仍然起作用,因此它并没有得到广泛的使用。例如,您不能使用此语法在不同类型的值之间切换。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48389072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档