练习 / rs

Rust 练习

Rust 的全部练习都来自可随时对照的主题。

75项练习 离线运行
rs 测验 新题 返回引用上的生命周期标注有什么作用? 共享引用与可变引用如何在不转移所有权的前提下安全访问值,以及怎样读懂并解决借用冲突。 进阶 1分钟 · 来自 借用规则 rs 预测输出 新题 这段程序会输出什么? 共享引用与可变引用如何在不转移所有权的前提下安全访问值,以及怎样读懂并解决借用冲突。 入门 2分钟 · 来自 借用规则 rs 审查 AI 代码 新题 审查生成的库存转移 共享引用与可变引用如何在不转移所有权的前提下安全访问值,以及怎样读懂并解决借用冲突。 高级 6分钟 · 来自 借用规则 rs 测验 新题 在同一时刻,哪组引用可以安全访问同一个普通值? 共享引用与可变引用如何在不转移所有权的前提下安全访问值,以及怎样读懂并解决借用冲突。 入门 1分钟 · 来自 借用规则 rs 找出 bug 新题 找出向量扩容里的 bug 共享引用与可变引用如何在不转移所有权的前提下安全访问值,以及怎样读懂并解决借用冲突。 进阶 4分钟 · 来自 借用规则 rs 测验 新题 父节点在单线程中拥有子节点,而每个子节点需要可选的父链接。哪种表示最符合这个所有权关系? Rust 的 Box、Rc、Arc 与 Weak 分别处理堆分配、单线程共享、多线程共享与非拥有链接,并解释计数、可变性和引用循环。 进阶 1分钟 · 来自 Box、Rc 与 Arc rs 预测输出 新题 这段程序会输出什么? Rust 的 Box、Rc、Arc 与 Weak 分别处理堆分配、单线程共享、多线程共享与非拥有链接,并解释计数、可变性和引用循环。 入门 2分钟 · 来自 Box、Rc 与 Arc rs 预测输出 新题 这段程序会输出哪两行? Rust 的 Box、Rc、Arc 与 Weak 分别处理堆分配、单线程共享、多线程共享与非拥有链接,并解释计数、可变性和引用循环。 入门 2分钟 · 来自 Box、Rc 与 Arc rs 审查 AI 代码 新题 审查生成的监听器中心 Rust 的 Box、Rc、Arc 与 Weak 分别处理堆分配、单线程共享、多线程共享与非拥有链接,并解释计数、可变性和引用循环。 高级 6分钟 · 来自 Box、Rc 与 Arc rs 找出 bug 新题 找出 Rc 树里的 bug Rust 的 Box、Rc、Arc 与 Weak 分别处理堆分配、单线程共享、多线程共享与非拥有链接,并解释计数、可变性和引用循环。 进阶 4分钟 · 来自 Box、Rc 与 Arc rs 测验 新题 函数在运行时从两个捕获型闭包表达式中选择一个并返回。哪种返回类型能直接支持这种需求? 理解 Rust 闭包如何捕获环境、获得 Fn 系列 trait,并在泛型、返回值、线程与动态分发中正确表达所有权。 进阶 1分钟 · 来自 闭包 rs 测验 新题 label 为 String 时,关于 move || println!("{label}") 的哪项说法正确? 理解 Rust 闭包如何捕获环境、获得 Fn 系列 trait,并在泛型、返回值、线程与动态分发中正确表达所有权。 进阶 1分钟 · 来自 闭包 rs 预测输出 新题 这段程序会输出什么? 理解 Rust 闭包如何捕获环境、获得 Fn 系列 trait,并在泛型、返回值、线程与动态分发中正确表达所有权。 入门 2分钟 · 来自 闭包 rs 审查 AI 代码 新题 审查生成的审计处理器 理解 Rust 闭包如何捕获环境、获得 Fn 系列 trait,并在泛型、返回值、线程与动态分发中正确表达所有权。 高级 6分钟 · 来自 闭包 rs 找出 bug 新题 找出 Fn 约束里的 bug 理解 Rust 闭包如何捕获环境、获得 Fn 系列 trait,并在泛型、返回值、线程与动态分发中正确表达所有权。 进阶 4分钟 · 来自 闭包 rs 测验 新题 哪个标准集合最直接地表达按键迭代并支持键范围查询的键值映射? 根据顺序、唯一性、键查找与范围查询选择 Rust 标准集合,并正确处理所有权、Entry API 和迭代顺序。 入门 1分钟 · 来自 集合 rs 测验 新题 哪个表达式只会在 user_id 不存在时调用 build_profile? 根据顺序、唯一性、键查找与范围查询选择 Rust 标准集合,并正确处理所有权、Entry API 和迭代顺序。 进阶 1分钟 · 来自 集合 rs 预测输出 新题 这段程序会输出什么? 根据顺序、唯一性、键查找与范围查询选择 Rust 标准集合,并正确处理所有权、Entry API 和迭代顺序。 入门 2分钟 · 来自 集合 rs 审查 AI 代码 新题 审查生成的产品汇总 根据顺序、唯一性、键查找与范围查询选择 Rust 标准集合,并正确处理所有权、Entry API 和迭代顺序。 高级 6分钟 · 来自 集合 rs 找出 bug 新题 找出 HashMap 报告里的 bug 根据顺序、唯一性、键查找与范围查询选择 Rust 标准集合,并正确处理所有权、Entry API 和迭代顺序。 进阶 4分钟 · 来自 集合 rs 测验 新题 代码构造 values.iter().map(transform),却从未使用返回的迭代器,会发生什么? 理解 Rust 迭代器的所有权语义、惰性适配器、短路消费、错误传播,以及自定义 Iterator 的正确契约。 入门 1分钟 · 来自 迭代器 rs 预测输出 新题 这段程序会输出什么? 理解 Rust 迭代器的所有权语义、惰性适配器、短路消费、错误传播,以及自定义 Iterator 的正确契约。 入门 2分钟 · 来自 迭代器 rs 测验 新题 哪个表达式会返回第一个整数解析错误,而不是静默丢弃无效字段? 理解 Rust 迭代器的所有权语义、惰性适配器、短路消费、错误传播,以及自定义 Iterator 的正确契约。 进阶 1分钟 · 来自 迭代器 rs 审查 AI 代码 新题 审查生成的重量转换 理解 Rust 迭代器的所有权语义、惰性适配器、短路消费、错误传播,以及自定义 Iterator 的正确契约。 高级 6分钟 · 来自 迭代器 rs 找出 bug 新题 找出惰性 map 里的 bug 理解 Rust 迭代器的所有权语义、惰性适配器、短路消费、错误传播,以及自定义 Iterator 的正确契约。 进阶 4分钟 · 来自 迭代器 rs 预测输出 新题 这段程序会输出什么? 用生命周期参数准确表达引用之间的关系,掌握省略规则、结构体借用、'static 与高阶生命周期约束。 进阶 2分钟 · 来自 生命周期省略与标注 rs 审查 AI 代码 新题 审查生成的键借用视图 用生命周期参数准确表达引用之间的关系,掌握省略规则、结构体借用、'static 与高阶生命周期约束。 高级 6分钟 · 来自 生命周期省略与标注 rs 测验 新题 两个参数与返回值共享一个生命周期名称时,保证了什么? 用生命周期参数准确表达引用之间的关系,掌握省略规则、结构体借用、'static 与高阶生命周期约束。 进阶 1分钟 · 来自 生命周期省略与标注 rs 找出 bug 新题 找出局部引用里的 bug 用生命周期参数准确表达引用之间的关系,掌握省略规则、结构体借用、'static 与高阶生命周期约束。 入门 4分钟 · 来自 生命周期省略与标注 rs 测验 新题 哪项说法正确区分了 String 的 static 边界与静态引用? 用生命周期参数准确表达引用之间的关系,掌握省略规则、结构体借用、'static 与高阶生命周期约束。 进阶 1分钟 · 来自 生命周期省略与标注 rs 测验 新题 fn choose<'a>(x: &'a str, y: &'a str) -> &'a str 表达什么? 生命周期描述引用在哪些程序区域内有效;理解推断、标注、省略、'static 与高阶约束,才能设计准确而不过度限制的借用接口。 进阶 1分钟 · 来自 生命周期 rs 测验 新题 什么时候适合使用 for 生命周期高阶约束? 生命周期描述引用在哪些程序区域内有效;理解推断、标注、省略、'static 与高阶约束,才能设计准确而不过度限制的借用接口。 高级 1分钟 · 来自 生命周期 rs 预测输出 新题 这段程序会输出什么? 生命周期描述引用在哪些程序区域内有效;理解推断、标注、省略、'static 与高阶约束,才能设计准确而不过度限制的借用接口。 入门 2分钟 · 来自 生命周期 rs 审查 AI 代码 新题 审查生成的记录视图 生命周期描述引用在哪些程序区域内有效;理解推断、标注、省略、'static 与高阶约束,才能设计准确而不过度限制的借用接口。 高级 6分钟 · 来自 生命周期 rs 找出 bug 新题 找出局部引用里的 bug 生命周期描述引用在哪些程序区域内有效;理解推断、标注、省略、'static 与高阶约束,才能设计准确而不过度限制的借用接口。 入门 4分钟 · 来自 生命周期 rs 测验 新题 名为 store-domain 的 package 同时有 src/lib.rs 与 src/main.rs。main.rs 通常应怎样导入库根公开的 Product? 区分 Cargo package、crate 与模块,并用路径、可见性和重导出构造稳定的 Rust 公共 API。 进阶 1分钟 · 来自 模块与 crate rs 测验 新题 哪项说法正确区分了 Cargo package、crate 与模块? 区分 Cargo package、crate 与模块,并用路径、可见性和重导出构造稳定的 Rust 公共 API。 入门 1分钟 · 来自 模块与 crate rs 预测输出 新题 这段程序会输出什么? 区分 Cargo package、crate 与模块,并用路径、可见性和重导出构造稳定的 Rust 公共 API。 入门 2分钟 · 来自 模块与 crate rs 审查 AI 代码 新题 审查生成的目录 API 区分 Cargo package、crate 与模块,并用路径、可见性和重导出构造稳定的 Rust 公共 API。 高级 6分钟 · 来自 模块与 crate rs 找出 bug 新题 找出模块路径里的 bug 区分 Cargo package、crate 与模块,并用路径、可见性和重导出构造稳定的 Rust 公共 API。 进阶 4分钟 · 来自 模块与 crate rs 测验 新题 函数只在调用期间读取 Shipment,且不会保存它。哪种参数最准确地表达该契约? Rust 用所有权、移动、复制与确定性析构在编译期约束资源管理;读懂值何时转移、借用和释放。 入门 1分钟 · 来自 所有权 rs 预测输出 新题 这段程序会输出哪一对长度? Rust 用所有权、移动、复制与确定性析构在编译期约束资源管理;读懂值何时转移、借用和释放。 入门 2分钟 · 来自 所有权 rs 预测输出 新题 这段程序会输出什么? Rust 用所有权、移动、复制与确定性析构在编译期约束资源管理;读懂值何时转移、借用和释放。 入门 2分钟 · 来自 所有权 rs 审查 AI 代码 新题 审查生成的任务删除 Rust 用所有权、移动、复制与确定性析构在编译期约束资源管理;读懂值何时转移、借用和释放。 高级 6分钟 · 来自 所有权 rs 找出 bug 新题 找出已移动标签里的 bug Rust 用所有权、移动、复制与确定性析构在编译期约束资源管理;读懂值何时转移、借用和释放。 入门 4分钟 · 来自 所有权 rs 测验 新题 关于 Copy 与 Clone,哪项说法正确? 追踪移动、复制、借用、部分移动与析构,确保每个 Rust 值在程序的每个位置都有明确所有者。 入门 1分钟 · 来自 移动、部分移动与丢弃 rs 预测输出 新题 这些行会按什么顺序输出? 追踪移动、复制、借用、部分移动与析构,确保每个 Rust 值在程序的每个位置都有明确所有者。 入门 2分钟 · 来自 移动、部分移动与丢弃 rs 预测输出 新题 这段程序会输出什么? 追踪移动、复制、借用、部分移动与析构,确保每个 Rust 值在程序的每个位置都有明确所有者。 进阶 2分钟 · 来自 移动、部分移动与丢弃 rs 审查 AI 代码 新题 审查生成的派发辅助函数 追踪移动、复制、借用、部分移动与析构,确保每个 Rust 值在程序的每个位置都有明确所有者。 高级 7分钟 · 来自 移动、部分移动与丢弃 rs 找出 bug 新题 找出已移动标签里的 bug 追踪移动、复制、借用、部分移动与析构,确保每个 Rust 值在程序的每个位置都有明确所有者。 入门 4分钟 · 来自 移动、部分移动与丢弃 rs 测验 新题 在 match &job { Job { owner, .. } => ... } 中,若 owner 是 String 字段,它通常绑定成什么类型? 用穷尽匹配、解构、守卫和绑定模式表达数据分支,并在不必要的移动与通配分支吞错前发现问题。 进阶 1分钟 · 来自 模式匹配 rs 测验 新题 哪个切片模式只接受一个命令名和一个参数? 用穷尽匹配、解构、守卫和绑定模式表达数据分支,并在不必要的移动与通配分支吞错前发现问题。 入门 1分钟 · 来自 模式匹配 rs 预测输出 新题 这段程序会输出什么? 用穷尽匹配、解构、守卫和绑定模式表达数据分支,并在不必要的移动与通配分支吞错前发现问题。 入门 2分钟 · 来自 模式匹配 rs 审查 AI 代码 新题 审查事件分类器 用穷尽匹配、解构、守卫和绑定模式表达数据分支,并在不必要的移动与通配分支吞错前发现问题。 高级 6分钟 · 来自 模式匹配 rs 找出 bug 新题 找出匹配模式里的 bug 用穷尽匹配、解构、守卫和绑定模式表达数据分支,并在不必要的移动与通配分支吞错前发现问题。 进阶 4分钟 · 来自 模式匹配 rs 测验 新题 Future::poll 为什么用 Pin<&mut Self> 接收 self? Pin 为地址敏感值建立不可移动契约,Unpin 决定何时可以解除限制;理解构造、投影、析构与 Future 轮询中的安全边界。 进阶 1分钟 · 来自 Pin 与 Unpin rs 测验 新题 把 Pin<Box<T>> 绑定移动到另一个变量时会发生什么? Pin 为地址敏感值建立不可移动契约,Unpin 决定何时可以解除限制;理解构造、投影、析构与 Future 轮询中的安全边界。 进阶 1分钟 · 来自 Pin 与 Unpin rs 预测输出 新题 这段程序依次输出哪三行? Pin 为地址敏感值建立不可移动契约,Unpin 决定何时可以解除限制;理解构造、投影、析构与 Future 轮询中的安全边界。 进阶 2分钟 · 来自 Pin 与 Unpin rs 审查 AI 代码 新题 审查生成的固定任务 Pin 为地址敏感值建立不可移动契约,Unpin 决定何时可以解除限制;理解构造、投影、析构与 Future 轮询中的安全边界。 高级 8分钟 · 来自 Pin 与 Unpin rs 找出 bug 新题 找出 Ticket 自引用里的 bug Pin 为地址敏感值建立不可移动契约,Unpin 决定何时可以解除限制;理解构造、投影、析构与 Future 轮询中的安全边界。 高级 4分钟 · 来自 Pin 与 Unpin rs 测验 新题 关于 Cell<String>,哪项说法正确? 通过 Cell 的值替换与 RefCell 的运行时借用,理解 Rust 内部可变性、借用冲突、重入回调和共享所有权的边界。 进阶 1分钟 · 来自 Cell 与 RefCell rs 预测输出 新题 这段程序会输出什么? 通过 Cell 的值替换与 RefCell 的运行时借用,理解 Rust 内部可变性、借用冲突、重入回调和共享所有权的边界。 入门 2分钟 · 来自 Cell 与 RefCell rs 预测输出 新题 这段程序能否编译?它会输出什么? 通过 Cell 的值替换与 RefCell 的运行时借用,理解 Rust 内部可变性、借用冲突、重入回调和共享所有权的边界。 进阶 2分钟 · 来自 Cell 与 RefCell rs 审查 AI 代码 新题 审查生成的事件总线 通过 Cell 的值替换与 RefCell 的运行时借用,理解 Rust 内部可变性、借用冲突、重入回调和共享所有权的边界。 高级 8分钟 · 来自 Cell 与 RefCell rs 找出 bug 新题 找出回调注册表里的 bug 通过 Cell 的值替换与 RefCell 的运行时借用,理解 Rust 内部可变性、借用冲突、重入回调和共享所有权的边界。 高级 4分钟 · 来自 Cell 与 RefCell rs 测验 新题 函数接收 &str,并通过解引用强制转换传入 &Box<String>。所有权会怎样变化? Rust 智能指针把间接访问与所有权、共享和析构规则组合起来;理解 Deref、Drop 与包装类型的真实边界。 进阶 1分钟 · 来自 智能指针 rs 预测输出 新题 这段程序会输出什么? Rust 智能指针把间接访问与所有权、共享和析构规则组合起来;理解 Deref、Drop 与包装类型的真实边界。 入门 2分钟 · 来自 智能指针 rs 预测输出 新题 这段程序会输出哪一对值? Rust 智能指针把间接访问与所有权、共享和析构规则组合起来;理解 Deref、Drop 与包装类型的真实边界。 入门 2分钟 · 来自 智能指针 rs 审查 AI 代码 新题 审查生成的机密包装器 Rust 智能指针把间接访问与所有权、共享和析构规则组合起来;理解 Deref、Drop 与包装类型的真实边界。 高级 8分钟 · 来自 智能指针 rs 找出 bug 新题 找出 Rc 节点图里的 bug Rust 智能指针把间接访问与所有权、共享和析构规则组合起来;理解 Deref、Drop 与包装类型的真实边界。 进阶 4分钟 · 来自 智能指针 rs 测验 新题 函数只在调用期间搜索文本,不保存任何内容。哪种普通参数类型最直接地表达这个契约? 理解 String 与 str 的所有权、UTF-8 字节边界和 Unicode 文本层次,并为字符串 API 选择正确的借用与分配方式。 入门 1分钟 · 来自 字符串 rs 测验 新题 关于 Rust 字符串单位,哪项说法正确? 理解 String 与 str 的所有权、UTF-8 字节边界和 Unicode 文本层次,并为字符串 API 选择正确的借用与分配方式。 进阶 1分钟 · 来自 字符串 rs 预测输出 新题 这段程序会输出什么? 理解 String 与 str 的所有权、UTF-8 字节边界和 Unicode 文本层次,并为字符串 API 选择正确的借用与分配方式。 入门 2分钟 · 来自 字符串 rs 审查 AI 代码 新题 审查生成的姓名汇总 理解 String 与 str 的所有权、UTF-8 字节边界和 Unicode 文本层次,并为字符串 API 选择正确的借用与分配方式。 高级 6分钟 · 来自 字符串 rs 找出 bug 新题 找出 UTF-8 前缀里的 bug 理解 String 与 str 的所有权、UTF-8 字节边界和 Unicode 文本层次,并为字符串 API 选择正确的借用与分配方式。 进阶 4分钟 · 来自 字符串