struct Plugin;
struct Blueprint<'a>(&'a());
struct Shell<'a> {
plugins: Vec<(&'a Plugin, Vec<Blueprint<'a>>)>,
}
impl<'a> Shell<'a> {
fn find_blueprint(&self, name: &str) -> Option<Blueprint> {
for plugin_blueprints in self.plugins.as_ref() {
for blueprint in plugin_blueprints.1 {
if blueprint.name.to_string() == name {
return Some(blueprint);
}
}
}
None
}
}
fn main() {}
生成此錯誤:爲什麼我會在for循環中得到一個「必須知道的值」錯誤?
error: the type of this value must be known in this context
--> src/main.rs:11:30
|
11 | for blueprint in plugin_blueprints.1 {
| ^^^^^^^^^^^^^^^^^^^
這讓我困惑,因爲plugin_blueprints
似乎是明確(&'a Plugin, Vec<Blueprint<'a>>)
類型。我不確定用什麼語法(如果有的話)來指定for循環中的類型。 Turbo-fish ::<
似乎不起作用。
爲什麼'self.plugins.as_ref()'?在推廣引起歧義時,您正在推廣參考。嘗試'self.plugins.iter()' – user2722968
@ user2722968我還是一個新的生鏽,所以我敢肯定,我在網絡上的某個地方撿起as_ref()作爲壞習慣^ - ^ – eiko