1.以字符串引用做为参数
fn main() {
let s = String::from("Hello world!");
let r = first_word(&s);
println!("first word is: {}",r);
}
fn first_word(s: &String) -> &str {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == ' ' as u8 {
return &s[..i];//返回从0到i(不包含i)的子串的切片
}
}
&s[..] //返回整个字符串的内容,做为切片
}
运行结果如下:
first word is: Hello
2.以字符切片引用做为参数
这种方式可用性更强
fn main() {
let s = String::from("Hello world!");
let r = first_word(&s);
println!("first word is: {}",r);
let s1 = "How are you world!";
let r1 = first_word(&s1);
println!("first word is: {}",r1);
}
fn first_word(s: &str) -> &str {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == ' ' as u8 {
return &s[..i];//返回从0到i(不包含i)的子串的切片
}
}
&s[..] //返回整个字符串的内容,做为切片
}
运行结果如下:
first word is: Hello
first word is: How