是否可以将参数传递给 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 Playgroundget_rand_vec()函数包含在这里

我已经查看了文档,但我还没有找到这样做的方法,而且我知道 default() 不接受参数,所以我什至不知道这是否可能与我的方法有关。如果没有办法获取默认值以动态更新,那么推荐的处理方法是什么?

看起来您正在考虑制作一个常规 new 函数,而不是在这里使用 Default::default()

Rust 中的 Struct { ..Default::default() } 没什么特别的,语法实际上是 Struct { ..any_expression } 并且表达式无法知道结构的其余部分,因此无法将参数传递给默认值使用这个语法。