如何将字符串与静态&str匹配?

时间:2019-04-14 20:30:17

标签: rust pattern-matching match

我正在编写一个程序,该程序在字符串处理方面可能做得太多。我将大多数文字信息移到了常量。我不确定在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

1 个答案:

答案 0 :(得分:2)

使用const蚂蚁而不是静态蚂蚁:

const STATUS_TEST_OK: &str = "PASSED";

fn match_out(s: &str) -> bool {
    match s {
        STATUS_TEST_OK => {
            println!("Yes");
            true
        }
        _ => {
            println!("No");
            false
        }
    }
}

另请参阅: