Ich habe einen Vektor von Strings und ich möchte einige Daten aus ihnen extrahieren und eine Struktur daraus erstellen. Es sieht etwa so aus:Kann ich "mut" hier loswerden?
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
Wie Sie sehen können, habe ich mut
für die Struktur zu verwenden. Gibt es eine Möglichkeit, das ohne mut
zu tun? Ich möchte in der Lage sein, die Struktur auf einmal zu initialisieren, ohne mut
. Oder ich kann andere Optionen ohne mut
auch betrachten.
Ich bin sicher, Sie haben Ihre Gründe zu fragen, aber beachten Sie, dass in Rust 'mut' nicht wirklich verpönt ist - es ist einfach nicht die Standardeinstellung und sollte nicht verwendet werden, wenn nicht notwendig. Es ist oft der Fall, dass etwas, das veränderbar ist, den Rest des Codes einfacher und schneller macht, und das fördert Rust. –