Rust头铁之路生命周期与引用有效性
2022年04月06日 日更 94 / 100 天
上一次我们学了Rust中的trait 定义及使用。今天这次学习生命周期,这个概念相当庞大,这一节仍然是部分概念,后期还有高级的概念。
01
声明周期避免了悬垂引用 { let r; { let x = 5; r = &x; } // x 在这里已经离开了作用域, println("r: {}", r); // 在这里使用 r,会出现报错信息 }
Rust 编译器有一个借用检查器,它会检查比较作用域之间的大小,确保所有的引用都是有效的。 02
声明周期的注解语法 &i32 // 引用 &"a i32 // 带有显式生命周期的引用 &"a mut i32 // 带有显式生命周期的可变引用 03
函数签名中的生命周期注解 fn longest<"a>(x: &"a str, y: &"a str) -> &"a str { if x.len() > y.len() { x }else { y } } 总结
编写方法的时候,还要带上生命周期的注解,感觉真麻烦。不知道真正写程序的时候,会是什么样子。留待后面的进一步学习。
上一篇:Rust 头铁之路 | trait:定义共享的行为
我是【明哥我来】,你的点赞关注,就是我的前进动力。