在匹配中,预期参考,找到枚举,错误E0308

时间:2016-10-16 17:15:38

标签: enums reference rust

我正在研究反向波兰表示法问题。在eval函数中,我想传递输入标记作为参考,然后遍历它并使用匹配来执行AB之类的操作。但该程序产生错误:

  

预期参考,找到枚举main::Token

我想在这里检查令牌的类型,但Rust似乎没有一种直接打印出类型的方法。这里的错误来源是什么?

pub enum Operator {
    // `+`
    Add, 
    // `-`
    Sub,
    // `*`
    Mul,
}

pub enum Token {
    Operator(Operator),
    Operand(isize),
}

pub fn eval(tokens: &[Token]) -> Option<isize> {       
    for token in tokens {
        // error here: expected reference, found enum `main::Token` 
        match token {
            Token::Operator(ref a) => println!("do something A"),
            Token::Operand(ref b) => println!("do something B"),
        };
    } 

    Some(5) 
}

fn main() { 
    // test input
    let input1 = Token::Operand(3);
    let input2 = Token::Operand(2);
    let sign1 = Operator::Add;
    let input3 = Token::Operator(sign1);
    eval(&[input1, input2, input3]);
}

我的问题是重复Matching on a reference to an enum,因为添加ref并未将其从类型不匹配错误中保存。

0 个答案:

没有答案