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