我有一个结构,我希望在初次启动该结构时将..Default::default()
参数传递给该结构。但是,我希望默认实现能够接受参数,因此在生成向量时,可以使用覆盖的默认值生成它。这是代码:
struct RandVec {
vector: Vec<i64>,
vec_len: i64,
element_range: i64,
}
impl Default for RandVec {
fn default() -> RandVec {
RandVec {
vec_len: 10000,
element_range: 1000,
/* The get_rand_vec() function takes in vector length and element range,
I want to pass in vec_len and element_range so if I've declared them in
in main() it takes those over the default values here */
vector: get_rand_vec(/*vec_len*/, /*element range*/),
}
}
}
fn main() {
let mut random_vector = RandVec {
vec_len: 10,
..Default::default()
};
}
[Rust Playground,此处包含get_rand_vec()
功能。
我浏览了文档,但没有找到一种方法来实现,而且我知道default()
不接受参数,所以我什至不知道是否可以使用我的方法。如果没有办法获取默认值以动态更新,建议使用哪种方法来处理此问题?
看起来您正在考虑制作常规的new
函数,而不是在此处使用Default::default()
。 Struct { ..Default::default() }
在Rust中没什么特别的,语法实际上是Struct { ..any_expression }
,表达式无法知道结构的其余部分。