是否可以将char与& char或& mut char进行比较?

时间:2016-05-26 23:38:37

标签: rust

我正在写一个Rust中的词法分析器,而且我对Rust与Java / C ++相比的处理方式还很陌生。

我的功能类似于:

fn lookup(next_char: &mut char, f: &File) {
    //if or match
    if next_char == '(' {
        //do something
    }
}

这给出了

error: the trait `core::cmp::PartialEq<char>` is not implemented for the type `&mut char` [E0277]
     if next_char == '(' {
        ^~~~~~~~~~~~~~~~

如果它们被切换,那么它会给出不匹配的类型错误。我明白为什么它会给出这两个错误。我想知道是否有某种方法来比较这两个值。也许我没有考虑Rust的方式,但我没有在文档或其他地方看到过这样做的好方法。

2 个答案:

答案 0 :(得分:9)

您只需取消引用即可从引用中获取char值:

if *next_char == '(' {
    // ...
}

答案 1 :(得分:1)

或者,可能更具惯用性,模式匹配:

match *next_char {
    '(' => // ...
}

虽然如果只分支一个字符,if-then可能是更好的选择。