主要观点:三年前在博客分享了As-Any Hack,目标是让类似AnyBox
的结构体在稳定 Rust 中实现向上转型到超特性,即DebugAny
,但存在问题,虽DebugAny
继承自Any
,却不能在dyn DebugAny
上使用Any
的方法,如downcast_ref
,在main
函数中调用会报错,对AnyBox
进行&dyn Any
的转换也会报错,不过截至 Rust 1.86 此问题已修复,现在转换可以正常工作,此修复在 beta 通道,稳定版即将发布,很多旧的 hack 可以退役,同时给出了无需 as-any hack 的扩展映射Extensions
的代码实现,包含插入、获取和获取可变值等方法,该文章被标记为rust。
关键信息:三年前分享的 hack 及存在问题,Rust 1.86 修复的情况,Extensions
结构体的相关方法及用途,文章的标签。
重要细节:AnyBox
结构体的定义,DebugAny
特性的实现,Extensions
结构体中各种方法的具体实现逻辑,如insert
方法将值插入映射,get
和get_mut
方法获取特定类型的值等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。