2014-12-13 137 views
0

我对Rust的一些代码感到困惑,但我正在管理它。但我在理解函数iter()如何在Rust中工作时遇到问题。字符串可能的结果是什么?什么是String.iter()在Rust中做什么?

编辑

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.idstring

+0

你能更精确吗? 'iter'函数(与所有其他事物一样)返回实现'Iterator'特性的东西... – filmor 2014-12-13 16:50:39

+0

您应该添加一个代表您的意思的代码示例。我认为''str''或'String'([代码示例](http://is.gd/rADesd))不是* iter'。 – Shepmaster 2014-12-13 17:12:00

+1

@Adham,你的例子不完整。仅供参考:http://stackoverflow.com/help/mcve; http://www.sscce.org/ – ArtemGr 2014-12-13 17:17:57

回答

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>

iterOption被定义为:

返回一个迭代在可能包含的值。

这使您可以编写代码,如果值为Some将发生,如果它是None不会发生。

+0

谢谢朋友!我想把这段代码翻译成java,iter()怎么可能在java语言中? – Adham 2014-12-13 17:32:31

+0

@Adham比适合发表评论要大 - 你应该为此提出一个新问题。 – Shepmaster 2014-12-13 17:33:15

+0

谢谢你的好意 – Adham 2014-12-13 17:35:04

相关问题