Skip to main content

object_rainbow/impls/
ulid.rs

1use typenum::U16;
2use ulid::Ulid;
3
4use crate::*;
5
6impl ToOutput for Ulid {
7    fn to_output(&self, output: &mut dyn crate::Output) {
8        self.to_bytes().to_output(output);
9    }
10}
11
12impl InlineOutput for Ulid {}
13
14impl Tagged for Ulid {}
15impl ListHashes for Ulid {}
16impl Topological for Ulid {}
17
18impl<I: ParseInput> Parse<I> for Ulid {
19    fn parse(input: I) -> crate::Result<Self> {
20        Self::parse_as_inline(input)
21    }
22}
23
24impl<I: ParseInput> ParseInline<I> for Ulid {
25    fn parse_inline(input: &mut I) -> crate::Result<Self> {
26        input.parse_inline().map(Self::from_bytes)
27    }
28}
29
30impl Size for Ulid {
31    type Size = U16;
32    const SIZE: usize = 16;
33}
34
35impl MaybeHasNiche for Ulid {
36    type MnArray = NoNiche<ZeroNoNiche<<Self as Size>::Size>>;
37}