包装盒不会自动转换为参考

时间:2018-09-09 16:10:43

标签: rust

我正在将Box存储在HashMap中。我想检索这些值并将其转换为对盒装类型的引用。我的代码如下:

use std::collections::HashMap;

trait A {}

trait B {
    fn get(&self, key: &'static str) -> Option<&A>;
}

struct C {
    map: HashMap<&'static str, Box<A>>,
}

impl B for C {
    fn get(&self, key: &'static str) -> Option<&A> {
        return self.map.get(key)
    }
}

我得到的错误是:

expected trait A, found struct `std::boxed::Box`

Option<&Box<&A>>转换为Option<&A>的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以取消引用该框并为其创建引用:

+---------------+
|  candidates   |
+---------------+
|         [1, 2]|
|         [2, 3]|
|         [2, 4]|
|         [3, 4]|
|         [1, 3]|
|         [1, 5]|
|         [3, 5]|
|and so on...   |
+---------------+