切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//传入一个字符串切片,输出第一个单词

fn first_word (_str:&str) -> &str { //需要传入字符串切片,传出也是字符串切片。
let byte_str = _str.as_bytes();//字符串切片类型没法直接迭代,通过as_bytes转换成字节数组。
for (num,&value) in byte_str.iter().enumerate(){ //通过字节数组.iter().enumerate()解耦,返回(下标,值)。
if value == b' ' { //只能用b' '这个表示空格,不知道直接 ' '," "为啥不行。
return &_str[..num];
}
}
&_str
}

fn main() {
let _string_type_1 = "hello xiaoyue";//本来就是字符串引用类型,[声明出来不可变了,栈中的]
let _string_type_2 = String::from("hello xiaoyue");//这个是字符串类型,所以传参的时候要加&引用符号,[专门声明的堆中的]

let s = first_word(&_string_type_2);
println!("{}",s);
}