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[..];
}