【发布时间】:2015-12-14 21:27:18
【问题描述】:
我正在尝试学习 Rust,所以如果我离题了,请耐心等待 :-)
我有一个程序可以将枚举插入HashMap,并使用Strings 作为键。我正在尝试匹配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));
}
【问题讨论】: