Rust 中带圆括号的结构有什么用?

Geo*_*lin 9 rust

我发现了一个我不明白的语言结构:

pub struct OpenOptions(fs_imp::OpenOptions);
Run Code Online (Sandbox Code Playgroud)

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

struct Foo {
    bar: i32,
}

struct Baz(Foo);

fn main() {
    let mut x: Baz = Baz(Foo{ bar: 3 });
}
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*son 11

正如评论中指出的那样,那些是Tuple Structs。当您想将一个元组与其他元组区分开时,它们很有用,但命名其每个字段将是多余的或不必要的冗长。换句话说,您可以通过命名来阐明元组的用途。

元组结构可用于创建简单的值对象。

struct Color(i32, i32, i32);

let black = Color(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 很不方便的是,颜色是元组结构的一个不好的例子:) 因为它可以是 RGB、HSV、HSL 或任何其他 3 分量编码。但重点。 (6认同)