2024-05-26
最后编辑于:2024-06-25
在编写结构体时,有时类型或生命周期在逻辑上与一个结构体关联起来了,但是却不属于其结构体的任何一个成员
PantomData不占空间,只是为了通过静态检查,模拟一个给定了类型的字段
| Pantom类型 | 'a | 'T | |
| :------------------------ | :--: | :--: | --- |
| PhantomData<T> | - | 协变 | |
| PhantomData<&'a T> | 协变 | 协变 | |
| PantomData<&'a mut T> | 协变 | 不变 | |
| PantomData<*const T> | - | 协变 | |
| PantomData<*mut T> | - | 不变 | |
| PantomData<fn(T)> | - | 逆变 | |
| PantomData<fn() -> T> | - | 协变 | |
| PantomData<fn(T) -> T> | - | 不变 | |
| PantomData<Cell<&'a ()>> | 不变 | - | |
https://learnku.com/docs/nomicon/2018/310-phantom-data/4721