在许多语言中,一个常见的构造函数习惯用法是使用类似以下伪代码的语法来初始化对象的值:
constructor Foo(args...) {
for arg {
object.arg = arg
}
}
Rust 起初似乎也不例外。许多包含一个构造函数,impl
用于将一系列有序的参数压缩到结构的字段中:struct
new
struct Circle {
x: i32,
y: i32,
radius: i32,
}
impl Circle {
fn new(x: i32, y: i32, radius: i32) -> Circle {
Circle { x: x, y: y, radius: radius }
}
}
使用宏执行此操作可能看起来像zip!(Circle, 52, 32, 5)
. 它会将值按顺序压缩到Circle
. 两者zip!(Circle, 52, 32)
或zip!(Circle, 52, 32, 5, 100)
都会出现问题,但是像这样的宏将是一种非常灵活的方式,可以将值推送到任何结构的新实例上,而无需太多样板。
有没有一种惯用的方法来简化这个样板?如何在不显式编写样板代码的情况下将一系列有序参数映射到结构的每个字段?