我发现了一种我不懂的语言 struct :

pub struct OpenOptions(fs_imp::OpenOptions);

我甚至用这些括号创建了一段可编译的代码,但我仍然无法理解:

struct Foo {
    bar: i32,
}

struct Baz(Foo);

fn main() {
    let mut x: Baz = Baz(Foo{ bar: 3 });
}

这些圆括号是干什么用的?

推荐答案

正如 comments 中指出的,这是Tuple Structs条.当您想要区分一个元组和其他元组时,它们很有用,但命名每个元组的字段将是多余的或不必要的冗长.换句话说,你可以通过命名来阐明元组的用途.

元组 struct 可用于创建简单的值对象.

struct Color(i32, i32, i32);

let black = Color(0, 0, 0);

Rust相关问答推荐

重新导出proc宏导致未解决的extern crate错误""

定义采用更高级类型泛型的性状

为什么';t std::cell::ref使用引用而不是非空?

Rust 的多态现象.AsRef与Derf

如何在不调用Collect()的情况下为新型vec实现IntoIterator?

Rust移动/复制涉及实际复制时进行检测

减少指示ProgressBar在Rust中的开销

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

为什么`tokio::main`可以直接使用而不需要任何导入?

Rust 中多个 & 符号的内存表示

try 从标准输入获取用户名和密码并删除 \r\n

Rust 并行获取对 ndarray 的每个元素的可变引用

为什么这个闭包没有实现Fn?

具有在宏扩展中指定的生命周期的枚举变体数据类型

如何展平以下嵌套的 if let 和 if 语句?

n 个范围的笛卡尔积

当我在 struct 中存储异步函数时,为什么它需要生命周期

有没有办法隐藏类型定义?

如何将 while 循环内的用户输入添加到 Rust 中的向量?

Rust:为什么在 struct 中borrow 引用会borrow 整个 struct?