我努力學習鏽借來的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));
}