Можно ли передать параметры в значения по умолчанию структуры Rust? - PullRequest
1 голос
/ 20 января 2020

У меня есть структура, в которую я бы хотел передать аргумент ..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() не принимает параметры, поэтому я даже не знаю, возможно ли это сделать с моим подходом. Если нет способа получить значения по умолчанию для динамического обновления, что было бы рекомендованным способом справиться с этим?

1 Ответ

3 голосов
/ 21 января 2020

Похоже, вы пытаетесь создать обычную функцию new вместо использования Default::default() здесь.

* * * * * Struct { ..Default::default() } не является чем-то особенным в Rust, синтаксис на самом деле Struct { ..any_expression } и выражение не может знать об остальной части структуры, поэтому нет способа передать параметры в значения по умолчанию с использованием этого синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...