Дополнительно
Есть ли быстрее/короче способ, чтобы инициализировать переменные в структуру ржавчины?
В следующем примере, я бы предпочел, чтобы присвоить значение для каждого поля в struct в декларации поля. Кроме того, он эффективно принимает одно дополнительное заявление по каждому полю присвоить значение поля. Все, что я хочу быть в состоянии сделать, это присвоить значение по умолчанию, когда структура инициализируется.
Есть ли более лаконичный способ сделать это?
struct cParams {
iInsertMax: i64,
iUpdateMax: i64,
iDeleteMax: i64,
iInstanceMax: i64,
tFirstInstance: bool,
tCreateTables: bool,
tContinue: bool,
}
impl cParams {
fn new() -> cParams {
cParams {
iInsertMax: -1,
iUpdateMax: -1,
iDeleteMax: -1,
iInstanceMax: -1,
tFirstInstance: false,
tCreateTables: false,
tContinue: false,
}
}
}
81
1
Вы можете задать значения по умолчанию для вашей структуры по реализации признака "по умолчанию". Функция
по умолчанию
, как будет выглядеть ваша нынешняя "новая" функция:Затем вы можете создать экземпляр структуры, давая только нестандартные значения:
С некоторыми незначительными изменениями в структуре данных, вы можете воспользоваться автоматически производной реализации по умолчанию. Если вы используете `#[вывести(по умолчанию)] на структуру данных, компилятор автоматически создаст функцию по умолчанию, которая заполняет каждое поле со значением по умолчанию. Булево значение по умолчанию равно false, то интегральное значение по умолчанию-0.
Целое число'значение S по умолчанию 0-это проблема, так как вы хотите, чтобы число полей, которые должны быть -1 по умолчанию. Можно определить новый тип, который реализует значение по умолчанию -1 и использовать, что вместо і64и в свои структуры. (Я не'т тестировал, но должно работать).
Однако, я'д предлагаю немного изменить свою структуру данных и использовать опцию
<і64и>
вместоі64и
. Я не'т знаем контексте вашего кода, но, похоже, вы're, используя специальное значение -1, чтобы представлять особый смысл и"бесконечное и", или "там's нет максимум на". В Русте, мы используем "вариант", чтобы представлять дополнительно присутствует значение. Там's нет необходимости -1 взломать. Вариант может быть либоnone
илинекоторые(х)
где X будет вашимі64и здесь. Это может даже быть беззнаковое целое, если -1 было только отрицательное значение. Вариант по умолчанию `` значение
нет`, поэтому с предлагаемыми изменениями, ваш код может выглядеть следующим образом: