编辑代码

fn main() {
    
    let mut s: String = String::from("Hello world!");

    println!("{}", s);

    let u: usize = first_word(&s);
    println!("{}", u);

    let h: &str = &s[0..5];
    println!("{}", h);
    
    let h = &s[..];
    println!("{}", h);

    let h = &s;
    println!("{}", h);
    
    let u2 = first_word2(&s[..]);
    println!("{}", u2);

    let s2: &str = "Hello world!";
    let u3 = first_word2(&s2[..]);
    println!("{}", u3);

    let u4 = first_word2(s2);
    println!("{}", u4);

    
    println!("{}", s2 == s);
    println!("{}", s2 == &s);

    println!("{}", &s2[..] == s);
    println!("{}", &s2[..] == s2);
    
}


fn first_word(s: &String) -> usize {
    let bytes = s.as_bytes();

    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            return i;
        }
    }

    s.len()
}

fn first_word2(s: &str) -> &str {
    let bytes = s.as_bytes();
    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            return &s[..i];
        }
    }

    return &s[..];
}