Rust 学习笔记:关于生命周期的练习题

Rust 学习笔记:关于生命周期的练习题

  • [Rust 学习笔记:关于生命周期的练习题](#Rust 学习笔记:关于生命周期的练习题)
    • 生命周期旨在防止哪种编程错误?
    • 以下代码能否通过编译?若能,输出是?
    • [如果一个引用的生命周期是 'static,这意味着什么?](#如果一个引用的生命周期是 'static,这意味着什么?)
    • [考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。](#考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。)
    • [考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。](#考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。)

Rust 学习笔记:关于生命周期的练习题

参考视频:

  1. https://www.bilibili.com/video/BV1brrGYZENQ

生命周期旨在防止哪种编程错误?

A. 超出数组边界进行索引(缓冲区溢出)

B. 为对象分配的内存不足

C. 在对象的内存被释放后仍然使用其引用

D. 在检查可能的错误之前使用可能失败的计算结果

答:C。

以下代码能否通过编译?若能,输出是?

rust 复制代码
fn shortest<'a, 'b>(x: &'a str, y: &'b str) -> &'a str {
    if x.len() < y.len() { x } else { y }
}

fn main() {
    println!("{}", shortest("hello", "rust"));
}

答:不能通过编译。

如果一个引用的生命周期是 'static,这意味着什么?

A. 引用所指向的数据不是动态的

B. 引用所指向的数据永远不会被释放

C. 引用所指向的数据不能被修改

D. 引用所指向的数据位于内存的静态区域

答:A。

考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。

rust 复制代码
struct Foo<'a> {
	bar: &'a i32
}

fn baz(f: Foo) -> &i32 { /* ... */ }

答:Rust 会接受这个函数签名。

rust 复制代码
fn baz<'a>(f: Foo<'a>) -> &'a i32

考虑以下函数签名,Rust 会接受吗?如果接收,请补全其生命周期。

rust 复制代码
struct Foo<'a> {
	bar: &'a i32
}

fn baz(f: &Foo) -> &i32 { /* ... */ }

答:Rust 会拒绝这个函数签名。

相关推荐
Source.Liu5 小时前
【LibreCAD】 RS_Units 类完整解析
c++·qt·rust
土豆125011 小时前
Rust入门系列(三):生命周期 - 编译器的"算命先生"
rust
ULTRA??14 小时前
C++类型和容器在MoonBit中的对应关系整理
开发语言·c++·rust
Source.Liu16 小时前
【学写LibreCAD】Rust Vector2D 实现与 C++ RS_Vector 的对应关系及优势分析
c++·rust·cad
Hello.Reader16 小时前
Rocket 0.5 快速上手3 分钟跑起第一个 Rust Web 服务
开发语言·前端·rust
FreeBuf_17 小时前
恶意 Rust 包瞄准 Web3 开发者窃取加密货币
开发语言·rust·web3
ULTRA??17 小时前
C++类型和容器在Rust中的对应关系
c++·rust
Source.Liu17 小时前
【学写LibreCAD】单位转换系统 Rust 实现
qt·rust·cad
Source.Liu18 小时前
【学写LibreCAD】RS文件 Rust 实现
rust·cad
小杍随笔18 小时前
【Zed 编辑器配置全攻略:自动保存、Prettier、终端字体与格式化设置一步到位】
开发语言·rust·编辑器