速成课第6节-练习解答
下面是上一堂 Rust 速成课“生命周期和切片“习题解答。
这篇文章是基于 FP 完成 Rust 教学系列的一部分。 如果你在博客之外阅读这篇文章,你可以在介绍文章的顶部找到这个系列中所有文章的链接。 也可订阅 RSS 频道。
练习1
如果你只是像这样添加 ref 关键字:
match person.age {
Some(ref age) => {
println!("Age is {}", age);
*age += 1;
}
None => println!("No age provided"),
}你会得到一个错误消息:
error[E0594]: cannot assign to immutable borrowed content `*age`
--> src/main.rs:16:13
|
14 | Some(ref age) => {
| ------- help: use a mutable reference instead: `ref mut age`
15 | println!("Age is {}", age);
16 | *age += 1;
| ^^^^^^^^^ cannot borrow as mutable你需要使用 ref mut age。 如果你像我一样经常输入 mut ref age 而不是 ref mut age。 别担心,编译器会提示你:
练习2
您需要为要交换的两个参数提供可变引用。 此外,为了获得对 res 的可变引用,res 本身需要是可变的:
练习3
我们需要两个不同的参数,并确保 ret 和返回值具有相同的生存期参数:
练习4
由于数据存储在程序的可执行文件中,因此它在整个程序的执行过程中都是存在的。 因此,生命周期是 'static:
练习5
这是迭代器方法计数的一个很好的用例:
最后更新于
这有帮助吗?