楼主在入门Rust在所有权这里有些卡住,理解不深。
特来码了一段和大家探讨,有坛友能解惑吗?
fn main() {
let s = String::from("Hello World");//s声明String复合类型
let q = "Hello World";//q声明 &str,&str我理解是借用了一个硬编码字段,
//q只是copy一份出来,并没有Hello World的所有权
let lens1 = s.len();//调用s的len函数获得返回值usize,len传了一个借用,没有所有权转移
let lens2 = get_lens(&s);//必须是&s,
let lenq1 = q.len();//调用s的len函数获得返回值usize,len传了一个借用,没有所有权转移
let lenq2 = get_lenq(&q);//这里就没有搞懂了,借用q和不借用q都可以,
//是否是说&q作为基本类型本来就无所谓???
let s1 = &s[0..5];//都需要借用
let s2 = &s[6..11];
let q1 = &q[0..5];
let q2 = &q[6..11];
println!("{},{},{},{},{},{},{},{}",s1,s2,q1,q2,lens1,lens2,lenq1,lenq2);
}
//我尝试把下面函数写成一个,不得行。得要传参类型不一样才行??????
fn get_lens(string:&String) -> usize{
string.len()
}
fn get_lenq(string:&str) -> usize{
string.len()
}
//我尝试把下面函数写成一个,不得行。得要传参类型不一样才行。
Rust的函数传参数从一开始就得指定好传入的类型,那两种“字符串”类型,就得写两个吗?
|