Как сопоставить строку со статической & str? - PullRequest
1 голос
/ 14 апреля 2019

Я пишу программу, которая, вероятно, слишком много делает с обработкой строк.Я переместил большинство буквенных сообщений в константы;Я не уверен, что это правильно в 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
...