2014-12-13 1 views
0

Я смущен каким-то кодом из Rust, но я управляю им. Но у меня есть проблема в понимании того, как функция iter() работает в Rust. Каков возможный результат для String?Что делает 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.id Где находится string.

+0

Не могли бы вы быть точнее? Функция 'iter' (как и для всех остальных) возвращает что-то, реализующее свойство' Iterator' ... – filmor

+0

Вам следует добавить пример кода, что вы имеете в виду. Я не думаю, что * есть * 'iter' на' & str' или 'String' ([пример кода] (http://is.gd/rADesd)). – Shepmaster

+1

@Adham, ваш пример не является полным. FYI: http://stackoverflow.com/help/mcve; http://www.sscce.org/ – ArtemGr

ответ

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

iter на Option определяется как:

Возвращает итератор по возможности, содержащейся значения.

Это позволяет писать код, который будет происходить, если значение Some и не будет, если это None.

+0

Спасибо, друг! Я пытаюсь перевести этот код в java, как может iter() быть в java-языке? – Adham

+0

@Adham, который больше, чем вписывается в комментарий - вы должны задать новый вопрос для этого. – Shepmaster

+0

Спасибо за вашу доброту – Adham