我对Rust的一些代码感到困惑,但我正在管理它。但是我在理解函数iter()
如何在Rust中工作时遇到了问题。 String的可能结果是什么?
修改
impl Selector {
pub fn specificity(&self) -> Specificity {
// http://www.w3.org/TR/selectors/#specificity
let Selector::Simple(ref simple) = *self;
let a = simple.id.iter().len();
let b = simple.class.len();
let c = simple.tag_name.iter().len();
(a, b, c)
}
}
simple.id
为string
。
答案 0 :(得分:2)
您似乎引用了Robinson中的代码,特别是this file。
请注意SimpleSelector
定义为:
pub struct SimpleSelector {
pub tag_name: Option<String>,
pub id: Option<String>,
pub class: Vec<String>,
}
所以id
不一个String
,而Option<String>
。
Option
上的 iter
定义为:
返回可能包含的值的迭代器。
这允许您编写如果值为Some
将会发生的代码,如果是None
则不会发生。