Я пишу программу, которая, вероятно, слишком много делает с обработкой строк.Я переместил большинство буквенных сообщений в константы;Я не уверен, что это правильно в Rust, но я привык писать это на C.
Я понял, что не могу легко использовать мой static &str
внутри выражения match
.Я могу использовать сам текст, но не могу понять, как это сделать правильно.
Я понимаю, что это проблема компилятора, но не знаю, как правильно написать эту конструкцию в стиле Rust.Стоит ли использовать перечисления вместо C-подобных статических переменных?
static SECTION_TEST: &str = "test result:";
static STATUS_TEST_OK: &str = "PASSED";
fn match_out(out: &String) -> bool {
let s = &out[out.find(SECTION_TEST).unwrap() + SECTION_TEST.len()..];
match s {
STATUS_TEST_OK => {
println!("Yes");
true
}
_ => {
println!("No");
false
}
}
}
error[E0530]: match bindings cannot shadow statics
--> src/lib.rs:8:9
|
2 | static STATUS_TEST_OK: &str = "PASSED";
| --------------------------------------- the static `STATUS_TEST_OK` is defined here
...
8 | STATUS_TEST_OK => {
| ^^^^^^^^^^^^^^ cannot be named the same as a static