Rust 中是否有用于声明一个接受结构体所有成员的构造函数的简写?

Jar*_*ith 1 rust

如果你有一个像这样的结构:

pub struct Foo {
    pub a: i32,
    pub b: i32,
    pub c: String,
    // and a bunch of other fields
}
Run Code Online (Sandbox Code Playgroud)

有没有办法声明一个构造函数,该构造函数采用结构的成员,而无需复制/粘贴所有无数的字段名称/类型:

impl Foo {
    pub fn new(/* maaaagic */) {

    }
}
Run Code Online (Sandbox Code Playgroud)

还是我必须做

impl Foo {
    pub fn new(
        a: i32,
        b: i32,
        c: String,
        // and a bunch of other args
    ) {

    }
}
Run Code Online (Sandbox Code Playgroud)

kmd*_*eko 6

如果您正在使用rust-analyzer,则有一个generate new辅助可以满足您的需求。

在此处输入图片说明

会产生:

impl Foo {
    pub fn new(a: i32, b: i32, c: String) -> Self { Self { a, b, c } }
}
Run Code Online (Sandbox Code Playgroud)