在許多語言中,一個常見的構造函數用法是初始化使用的語法類似這樣的僞對象的值:如何初始化結構與一系列的參數
constructor Foo(args...) {
for arg {
object.arg = arg
}
}
鏽起初似乎也不例外。爲struct
許多impl
包括一個名爲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)
都會出現問題,但是像這樣的宏將是一種非常靈活的方法,可以將值推送到任何結構的新實例,而不需要太多的樣板。
有沒有一種習慣的方法來簡化這個樣板?如何將一系列有序參數映射到結構的每個字段上而不明確寫入樣板代碼來這樣做?
謝謝你,我不知道'From'特性,它揭示了我希望使用的那種界面。我發現的另一個選項,如果命名字段不重要,則使用元組結構:'Circle(i32,i32,i32)'。一個適應性較差的解決方案是從配置文件反序列化,雖然這有利於默認情況下使多個不同的實例可用,並且易於包含更多。 – Aaron3468