Skip to main content

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> InlineOutput for PhantomData<T> {}
8
9impl<T: ?Sized, I: ParseInput> Parse<I> for PhantomData<T> {
10    fn parse(input: I) -> crate::Result<Self> {
11        ParseInline::parse_as_inline(input)
12    }
13}
14
15impl<T: ?Sized, I: ParseInput> ParseInline<I> for PhantomData<T> {
16    fn parse_inline(_: &mut I) -> crate::Result<Self> {
17        Ok(Self)
18    }
19}
20
21impl<T: ?Sized> ListHashes for PhantomData<T> {}
22impl<T: ?Sized> Topological for PhantomData<T> {}
23impl<T: ?Sized> Tagged for PhantomData<T> {}
24
25impl<T: ?Sized> Size for PhantomData<T> {
26    const SIZE: usize = 0;
27    type Size = typenum::U0;
28}
29
30impl<T: ?Sized> MaybeHasNiche for PhantomData<T> {
31    type MnArray = NoNiche<ZeroNoNiche<<Self as Size>::Size>>;
32}