object_rainbow/impls/
phantom.rs

1use crate::*;
2
3impl<T: ?Sized> ToOutput for PhantomData<T> {
4    fn to_output(&self, _: &mut dyn Output) {}
5}
6
7impl<T: ?Sized, I: ParseInput> Parse<I> for PhantomData<T> {
8    fn parse(input: I) -> crate::Result<Self> {
9        ParseInline::parse_as_inline(input)
10    }
11}
12
13impl<T: ?Sized, I: ParseInput> ParseInline<I> for PhantomData<T> {
14    fn parse_inline(_: &mut I) -> crate::Result<Self> {
15        Ok(Self)
16    }
17}
18
19impl<T: ?Sized> Topological for PhantomData<T> {}
20impl<T: ?Sized> Tagged for PhantomData<T> {}
21impl<T: ?Sized + 'static + Send + Sync, E: 'static> Object<E> for PhantomData<T> {}
22impl<T: ?Sized + 'static + Send + Sync, E: 'static> Inline<E> for PhantomData<T> {}
23impl<T: ?Sized + 'static + Send + Sync> ReflessObject for PhantomData<T> {}
24impl<T: ?Sized + 'static + Send + Sync> ReflessInline for PhantomData<T> {}
25
26impl<T: ?Sized> Size for PhantomData<T> {
27    const SIZE: usize = 0;
28    type Size = typenum::U0;
29}
30
31impl<T: ?Sized> MaybeHasNiche for PhantomData<T> {
32    type MnArray = NoNiche<ZeroNoNiche<<Self as Size>::Size>>;
33}