У меня есть вектор строк, и я хочу извлечь из них некоторые данные и создать из него структуру. Это выглядит примерно так:Могу ли я избавиться от «мута» здесь?
let mut my_struct = MyStruct::new(0, 0, 0);
let regex1 = Regex::new("...");
let regex2 = Regex::new("...");
for s_iter in my_str_vec.iter() {
if regex1.is_match(s_iter) {
// parsing the value
// .........
let var1 = regex1.captures("....");
// and assign it to to a field of the struct instance
my_struct.field1 = var1;
}
// do the same thing for other fields each step in the loop
// each step only one regex gets triggered
if regex2.is_match(s_iter) {
// parsing the value
// .........
let var2 = regex12.captures("....");
// and assign it to to a field of the struct instance
my_struct.field2 = var2;
}
}
// now "my_struct" is now completely initialized
Как вы можете видеть, я должен использовать mut
для структуры. Есть ли способ сделать это без mut
? Я хочу иметь возможность инициализировать структуру сразу, без mut
. Или я могу рассмотреть другие варианты без mut
.
Уверен, что у вас есть причины для запроса, но обратите внимание, что в Rust 'mut' на самом деле не нахмурился - он просто не является значением по умолчанию и не должен использоваться, когда это не необходимо. Часто бывает, что создание чего-то изменяемого приведет к тому, что остальная часть кода будет проще и быстрее, и это то, что поощряет Rust. –