练习 / 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分钟 · 来自字符串