是否可以将参数传递给 Rust 结构的默认值?
Is it possible to pass parameters into default values of a Rust structure?
我有一个结构,我希望能够在首次启动该结构时将 ..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()
。
Rust 中的 Struct { ..Default::default() }
没什么特别的,语法实际上是 Struct { ..any_expression }
并且表达式无法知道结构的其余部分,因此无法将参数传递给默认值使用这个语法。
我有一个结构,我希望能够在首次启动该结构时将 ..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()
。
Rust 中的 Struct { ..Default::default() }
没什么特别的,语法实际上是 Struct { ..any_expression }
并且表达式无法知道结构的其余部分,因此无法将参数传递给默认值使用这个语法。