pub type SurfaceId = Id<Surface>;
struct SurfaceId(RawId, PhantomData<Surface>);
0: RawId
1: PhantomData<Surface>