当前位置: 首页 > news >正文

Rust 学习笔记:关于闭包的练习题

Rust 学习笔记:关于闭包的练习题

  • Rust 学习笔记:关于闭包的练习题
    • 问题 1
    • 问题 2
    • 以下程序能否通过编译?若能,输出是?
    • 以下程序能否通过编译?若能,输出是?
    • 考虑该 API,空白处填写哪个 Fn trait 最合适?
    • 考虑该 API,空白处填写哪个 Fn trait 最合适?

Rust 学习笔记:关于闭包的练习题

参考视频:

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

问题 1

下列哪项最能描述为什么 Rust 会推断闭包参数/返回值类型,但不会推断顶层函数的参数/返回值类型的理由?

A. 由于向后兼容性需要与旧版 Rust 兼容。
B. 顶层函数可以是库外部接口的一部分,而闭包不能直接暴露。
C. 由于停机问题(halting problem),从数学上讲,Rust 推断顶层函数类型是不可能的。
D. 任何可分配给变量的东西都可以推断类型,而顶层函数不能分配给变量。

答:B。

问题 2

Rust 允许在闭包的参数中进行模式匹配,包括使用下划线。代码如下:

let f = |_| ();
let s = String::from("Hello");
f(s);

A. f 读取 s 然后丢弃结果。
B. f 对 s 没有影响。
C. f 导致 s 立即被丢弃。
D. f 捕获 s 在其环境中。

答:C。

以下程序能否通过编译?若能,输出是?

fn main() {let mut s = String::from("hello");let mut add_suffix = || s.push_str(", world!");println!("{}", s);add_suffix();
}

答:不能通过编译。

以下程序能否通过编译?若能,输出是?

fn main() {let mut s = String::from("Hello");let mut add_suffix = |s: &mut String| s.push_str(" world");println!("{}", s);add_suffix(&mut s);
}

答:可以通过编译。输出 Hello。

考虑该 API,空白处填写哪个 Fn trait 最合适?

fn for_each_mut<T, F: ____(&mut T)> (v: &mut Vec<T>, mut f: F) {for x in v.iter_mut() {f(x);}
}

答:FnMut。

因为这个闭包需要多次调用,并且改变数组 v 中的元素值。

考虑该 API,空白处填写哪个 Fn trait 最合适?

pub struct Analyzer<F> {postprocess: F,
}impl<F: ___(i32) -> i32> Analyzer<F> {fn process(&self, n: i32) -> i32 { /* ... */ }pub fn pipeline(&self, n: i32) -> i32 {let n = self.process(n);(self.postprocess)(n)}
}

答:Fn。

因为这个闭包需要改变所有权。

相关文章:

  • 运维自动化工具 ansible 知识点总结
  • 怎么查找idea插件的下载位置,并更改
  • 探究Azure devops 流水线缓存
  • 2025年5月蓝桥杯stema省赛真题——象棋移动
  • 测试报告里都包含哪些内容?
  • LLM 驱动的 Go 到 Rust 项目迁移的挑战与实践
  • 如何从经纬度数据中判断哪个是经纬度
  • Spring Boot 3.4.6 中文文档上线
  • 分布式爬虫监控架构设计
  • NFS 挂载配置与优化最佳实践指南
  • VUE项目部署IIS服务器手册
  • o1 mini vs o3 mini vs o3 mini high:2025全面对比测评(性能/价格/场景)
  • 鸿蒙OSUniApp 制作倒计时与提醒功能#三方框架 #Uniapp
  • 服务器数据迁移
  • Filebeat es 同步服务器日志到es
  • 【Linux】cat命令 – 在终端设备上显示文件内容
  • 查服务器信息 常用的一些命令 =^^ =
  • 小白成长之路-Linux程序与进程(一)
  • Kettle 远程mysql 表导入到 hadoop hive
  • 游戏引擎学习第314天:将精灵拆分成多个层
  • 中国建设监理协会网站会员专区/推广策略可以分为哪三种
  • wordpress汉化版/win10系统优化
  • 新乡高端网站建设/网上怎么做广告
  • 素材设计做的好的网站有哪些/免费b站软件推广网站2023
  • 网站做的好的公司有/种子搜索神器网页版
  • 用自己照片做衣服_杯子的是哪个网站/阿亮seo技术