]> piware.de Git - learn-rust.git/blob - src/main.rs
References, slices, Option
[learn-rust.git] / src / main.rs
1 fn first_word(s: &str) -> &str {
2     for (i, &item) in s.as_bytes().iter().enumerate() {
3         if item == b' ' {
4             return &s[..i];
5         }
6     }
7
8     s
9 }
10
11 fn second_word(s: &str) -> Option<&str> {
12     for (i, &item) in s.as_bytes().iter().enumerate() {
13         if item == b' ' {
14             return Some(first_word(&s[(i + 1)..]));
15         }
16     }
17
18     return None;
19 }
20
21 fn main() {
22     let s = String::from("Hello world");
23     println!("first word: '{}'", first_word(&s));
24     println!("second word: '{}'", second_word(&s).unwrap());
25
26     let s2 = "hello dude blah";
27     println!("second word of single: '{}'", second_word(s2).unwrap_or("(none)"));
28
29     match second_word(s2) {
30         Some(w) => println!("match: second word of '{}' exists: {}", s2, w),
31         None => println!("match: second word of '{}' does not exist", s2),
32     }
33 }