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 会拒绝这个函数签名。

相关推荐
对象存储与RustFS15 小时前
用 rclone 把现有 S3/MinIO 数据同步到 RustFS
后端·rust·开源
2501_9159184118 小时前
Rust 程序抓包解密,rustls 不认系统证书的几种办法
开发语言·后端·网络协议·ios·adb·https·rust
学心理学的程序员18 小时前
anydoc:Firecrawl 出的 Rust 文档转 Markdown,4ms 转换、14 种格式干翻 MarkItDown
开发语言·后端·rust·开源·firecrawl·claude code·anydoc
Flynt1 天前
OpenAI把Codex底层从TS重写成Rust,我拆开看了下它的三层架构
rust·openai·agent
第一程序员1 天前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github
NutShell Wang2 天前
Firecrawl anydoc 实战拆解:用一个 Rust 依赖吃下 14 种文档格式
性能优化·rust·vibe coding
DevHub2 天前
probe-rs 教程:一行命令替代 OpenOCD 烧写调试 Cortex-M
arm开发·嵌入式硬件·mcu·rust
程序员爱钓鱼2 天前
Rust const泛型详解:让常量也成为泛型参数
后端·面试·rust
k4m7v2pz2 天前
ESP32-S3 + I2S 麦克风实时音频流静音问题排查:从网络到AGC的谬误溯源
rust·音频·esp32·agc·实时监听·静音排查
SomeB1oody2 天前
【RustyML入门】7.4. 按需裁剪与模块化集成
开发语言·后端·机器学习·rust·教程