2014-12-13 136 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

相關問題