#macro-derive #id #type-id #accursed-unutterable-type-id

accursed-unutterable-type-id-derive

为accursed-unutterable-type-id提供的derive宏

2个版本

0.0.0-pre.ohno2022年6月18日
0.0.0-pre.cursed2022年6月17日

#15 in #type-id


用于accursed-unutterable-type…

MIT许可证

7KB
96

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
~38K SLoC