marker::PhantomData 类
使用 PhantomData<T>, 用于处理编译期生命周期的问题, PhantomData<T> 本身不占用内存.
以下示例中, 结构体 S 的大小跟 i32 是一致的:
use std::marker::PhantomData;
use std::mem::size_of_val;
struct S<A, B> {
first: A,
phantom: PhantomData<B>,
}
fn main() {
let s: S<char, f64> = S {
first: 'a',
phantom: PhantomData,
};
println!("size of s: {}", size_of_val(&s));
}