是否可以将参数传递给Rust结构的默认值?

问题描述 投票:0回答:1

我有一个结构,我希望在初次启动该结构时将..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()不接受参数,所以我什至不知道是否可以使用我的方法。如果没有办法获取默认值以动态更新,建议使用哪种方法来处理此问题?

rust structure
1个回答
0
投票

看起来您正在考虑制作常规的new函数,而不是在此处使用Default::default()Struct { ..Default::default() }在Rust中没什么特别的,语法实际上是Struct { ..any_expression },表达式无法知道结构的其余部分。

© www.soinside.com 2019 - 2024. All rights reserved.