1字符串截取后另存到其他变量
fn main() {
let mut reference_to_nothing = String::from("sdfsd dfsf serwe");//现有一字符串"sdfsd dfsf serwe"
let reference_to_nothing1 = first_word(&reference_to_nothing);//调用first_word函数,返回对reference_to_nothing的借用
println!("{}", reference_to_nothing1);//查看返回值:sdfsd
//接下来我的需求是把这个reference_to_nothing1值单独保存,在我修改reference_to_nothing时,reference_to_nothing1不受其影响
let reference_to_nothing2 = reference_to_nothing1.to_string().clone();
//调用.to_string()返回一个新的String对象,
//调用.clone()方法,强制在堆中储存一份reference_to_nothing2的值
// reference_to_nothing2 的作用域结束
// 这里可以进行对 reference_to_nothing 的可变操作
reference_to_nothing.clear(); //这里可以对reference_to_nothing任意修改
println!("原始数据{}", reference_to_nothing);
println!("{}", reference_to_nothing2);
}
fn first_word(s: &String) -> &str {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == b' ' {
return &s[0..i];
}
}
&s[..]
}
注意:本文归作者所有,未经作者允许,不得转载