摘要:如题:内存安全需要需要手工标注,如下所示,一个比较字符串长度的函数,不同的参数,可能生命周期不一样,为了防止悬垂引用错误,需要手工标注出不同的生命周期长度。
如题:内存安全需要需要手工标注,如下所示,一个比较字符串长度的函数,不同的参数,可能生命周期不一样,为了防止悬垂引用错误,需要手工标注出不同的生命周期长度。
C++是条分界线,java向左,选择割掉指针,练成葵花宝典。而Rust选择向右,把压力给到程序员,需要把问题消灭中开发阶段。
真是心疼Rust程序员,是不是头发掉的更快?
另外好奇,Rust这样的设计,真的带来总体效率的提升吗?
而且,项目代码量一旦上去,每次这样标注真的能带来内存安全性的消除?
// 错误示例2: 不匹配的生命周期// 这个函数有两个不同的生命周期参数fn longest_wrong(x: &'a str, y: &'b str) -> &'a str {// 如果返回y,编译器会报错// 因为y的生命周期是'b,而函数声明返回的是'a的生命周期y // 这里会报错}// 测试错误示例2let string1 = String::from("long string is long");let result;{let string2 = String::from("xyz");result = longest_wrong(string1.as_str, string2.as_str);}println!("The longest string is: {}", result);#Rust#
来源:随遇而安一点号