Rust 中是否有用于声明一个接受结构体所有成员的构造函数的简写?
如果你有一个像这样的结构:
pub struct Foo {
pub a: i32,
pub b: i32,
pub c: String,
// and a bunch of other fields
}
有没有办法声明一个构造函数,该构造函数采用结构的成员,而无需复制/粘贴所有无数的字段名称/类型:
impl Foo {
pub fn new(/* maaaagic */) {
}
}
还是我必须做
impl Foo {
pub fn new(
a: i32,
b: i32,
c: String,
// and a bunch of other args
) {
}
}
回答
如果您正在使用rust-analyzer,则有一个generate new辅助可以满足您的需求。
会产生:
impl Foo {
pub fn new(a: i32, b: i32, c: String) -> Self { Self { a, b, c } }
}