Eva*_*ose 7 default operator-keyword rust
#[derive(Default)]
struct SomeOptions {
foo: i32,
bar: f32,
}
fn main() {
let options = SomeOptions { foo: 42, ..Default::default() };
}
Run Code Online (Sandbox Code Playgroud)
..返回值的前缀Default::default()是什么?为什么这里需要它?它几乎看起来像是一个传播运营商,但我不确定.我理解..Default::default()正在做什么 - 用默认值填充剩余的struct参数SomeOptions,但不是如何..工作.这个运营商的名字是什么?
She*_*ter 11
这是struct update语法.仅仅需要一种简洁的方式将结构的所有成员移动/复制到新结构中,这可能需要一些小的修改.
这种"长"的写作方式是:
let a = SomeOptions::default();
let options = SomeOptions { foo: 42, bar: a.bar };
Run Code Online (Sandbox Code Playgroud)
您确实可以认为它类似于JavaScript"spread"运算符,但Rust的所有权和强类型的细微差别仍在发挥作用,因此它并没有被广泛使用.例如,您不能使用此语法在不同类型的值之间进行.
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |