我有一个结构,希望..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() }
是没有什么特别的防锈,语法实际上是Struct { ..any_expression }
和表达式不能了解结构的其余部分,因此没有办法将参数传递到使用此语法默认值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句