我努力学习锈借来的HashMap,所以忍耐一下,如果我的路要走:-)模式匹配在包含枚举
我有枚举插入到一个HashMap
,并使用String
个程序作为关键。我试图匹配HashMap
的内容。问题是我无法弄清楚如何在eval_output
函数中获得正确的借款,参考和类型。 eval_output
函数应该如何正确处理对HashMap
的引用?有没有我可以阅读的优秀文件来了解更多关于这个特定主题的内容?
use std::prelude::*;
use std::collections::HashMap;
enum Op {
Not(String),
Value(u16),
}
fn eval_output(output: &str, outputs: &HashMap<String, Op>) -> u16 {
match outputs.get(output) {
Some(&op) => {
match op {
Op::Not(input) => return eval_output(input.as_str(), outputs),
Op::Value(value) => return value,
}
}
None => panic!("Did not find input for wire {}", output),
}
}
fn main() {
let mut outputs = HashMap::new();
outputs.insert(String::from("x"), Op::Value(17));
outputs.insert(String::from("a"), Op::Not(String::from("x")));
println!("Calculated output is {}", eval_output("a", &outputs));
}