如何利用Rust的HashMap克服官方文档中闭包的约束?

2026-05-06 02:510阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计695个文字,预计阅读时间需要3分钟。

如何利用Rust的HashMap克服官方文档中闭包的约束?

问题概述:值缓存是一种增加泛用性的实用行为,我们可能希望在其他代码中的其他闭包中也能使用它们。然而,目前Cacher的实现存在两个小问题,这使得在不同上下文中复用变得非常困难。

问题一:Cacher的实现细节不明确,导致在不同上下文中难以复用。

问题概述

值缓存是一种更加广泛的实用行为,我们可能希望在代码中的其他闭包中也使用他们。然而,目前Cacher的实现存在两个小问题,这使得在不同上下文中复用变得很困难。

第一个问题是Cacher实例假设对于value方法的任何arg参数值总是会返回相同的值。也就是说,这个Cacher的测试会失败:

《rust程序设计语言》13章闭包内容提出的问题

#[test] fn call_with_different_values() { let mut c = Cacher::new(|a| a); let v1 = c.value(1); let v2 = c.value(2); assert_eq!(v2, 2); }

具体代码请在《rust程序设计语言》第13章第一节Cacher实现的限制中找到。


解决思路

尝试修改Cacher存放一个哈希 map 而不是单独一个值。

阅读全文

本文共计695个文字,预计阅读时间需要3分钟。

如何利用Rust的HashMap克服官方文档中闭包的约束?

问题概述:值缓存是一种增加泛用性的实用行为,我们可能希望在其他代码中的其他闭包中也能使用它们。然而,目前Cacher的实现存在两个小问题,这使得在不同上下文中复用变得非常困难。

问题一:Cacher的实现细节不明确,导致在不同上下文中难以复用。

问题概述

值缓存是一种更加广泛的实用行为,我们可能希望在代码中的其他闭包中也使用他们。然而,目前Cacher的实现存在两个小问题,这使得在不同上下文中复用变得很困难。

第一个问题是Cacher实例假设对于value方法的任何arg参数值总是会返回相同的值。也就是说,这个Cacher的测试会失败:

《rust程序设计语言》13章闭包内容提出的问题

#[test] fn call_with_different_values() { let mut c = Cacher::new(|a| a); let v1 = c.value(1); let v2 = c.value(2); assert_eq!(v2, 2); }

具体代码请在《rust程序设计语言》第13章第一节Cacher实现的限制中找到。


解决思路

尝试修改Cacher存放一个哈希 map 而不是单独一个值。

阅读全文