4个版本
0.0.4 | 2023年11月11日 |
---|---|
0.0.3 | 2023年11月2日 |
0.0.2 | 2023年11月1日 |
0.0.1 | 2023年10月31日 |
#439 in 过程宏
每月下载量 23次
40KB
651 行
erased-generic-trait
一个用于从具有泛型方法的特质生成特质对象的Rust crate。
何时使用
- 当你想从一个具有泛型方法的特质创建特质对象时。
- 当泛型方法只有一个类型的界限时。
- 当泛型方法需要 'static 生命周期时。
- 当你可以知道在转换为特质对象之前传递给泛型方法的全部类型。
动机
在Rust中,只有对象安全特质才能成为特质对象,泛型方法使它们不安全。为了克服这个限制,我们可以使用 dyn Any
作为参数从非泛型方法中获取泛型参数,并在其中调用泛型方法。我们可以从 'dyn Any 中检查 TypeId
,但我们不能从 'TypeId' 中知道具体的类型。因此,宏将注入调用具有具体类型的泛型方法的函数,并根据 TypeId
调用这些函数。但你应该知道这种方法不是很高效。
依赖项
~1–1.6MB
~29K SLoC