У меня есть строковый ввод, который нужно разделить на значения и сопоставленные шаблоны, поэтому я ищу лучший способ сделать это.Строка сопоставления строк и извлечения значений
Это то, что у меня есть до сих пор.
fn main() {
let s: &str = "A 1 2 3 4";
let v: Vec<&str> = s.split(" ").collect();
match &v[..] {
[letter, x1, x2, x3] => println!("{:?}", letter), //do something with values
[letter, x1, x2, x3, x4] => println!("{:?}", letter), //do something with values
_ => println!("no match")
}
}
У меня есть несколько проблем с этим подходом:
- Этот код выдает ошибку
error: slice pattern syntax is experimental (see issue #23121)
поэтому я предполагаю, что я должен использовать каждую ночь, чтобы он работал? Нужно ли мне импортировать дополнительный модуль для этого? - Есть ли такой же простой подход, который не требовал бы ночной?
- Есть ли элегантный способ дальнейшего согласования, чтобы вытащить целочисленные значения? Например, можно ли преобразовать вектор в кортеж так, чтобы
("A", 1, 2, 3, 4)
соответствовал бы и("A", 1, 2, "D")
не был бы?
Я не думаю, что это полный ответ, но это то, для чего был создан ящик ['scan-rules'] (https://crates.io/crates/scan-rules). –