4 个版本
0.0.1-pre.ohyes | 2023 年 10 月 14 日 |
---|---|
0.0.1-pre.ohno | 2022 年 8 月 4 日 |
0.0.0-pre.ohno | 2022 年 6 月 18 日 |
0.0.0-pre.cursed | 2022 年 6 月 17 日 |
#671 in Rust 模式
10KB
71 代码行
accursed-unutterable-type-id
一个诅咒的、不可言说的类型 ID。
很久以前,当时间可能还不是人类概念,而只是智者之间的一种模糊想法时,就有了 std::any::TypeId
。
它是一个很好的类型,这些早期地球居民都非常喜欢它。然而,它有一个基本问题,即使是长者也无法解决:它需要编译器的大量魔法。那时的民众并不陌生于魔法,但仅仅想到在他们的类型 ID 中使用魔法就引起了他们之间无数的战争。
在所谓的“类型 ID 战争”的最后和最残酷的战争之后,一个特别聪明的族长之一取得了突破。他们找到了一种在用户代码中实现类型 ID 的新方法!尽管他们的方法有一个显著的缺点,即必须使用 derive 宏(那时的老人只能梦想的技术)。然而,这一变化被接受了,人民之间的和平得到了保证。
使用它就像在你的类型上贴一个 derive 宏,然后使用 AccursedUnutterableTypeId::of
获取类型 ID 一样简单。
use accursed_unutterable_type_id::{AccursedUnutterableTypeId, AccursedUnutterablyTypeIdentified};
#[derive(AccursedUnutterablyTypeIdentified)]
struct Uwu;
let type_id = AccursedUnutterableTypeId::of::<Uwu>();
println!("{type_id:?}")
依赖关系
~1.2–1.7MB
~37K SLoC