object_rainbow/impls/
bytes.rs

1use typenum::ToUInt;
2
3use crate::*;
4
5impl<const N: usize> ToOutput for [u8; N] {
6    fn to_output(&self, output: &mut dyn Output) {
7        output.write(self);
8    }
9}
10
11impl<const N: usize> Parse<ReflessInput<'_>> for [u8; N] {
12    fn parse(input: ReflessInput<'_>) -> crate::Result<Self> {
13        ParseInline::parse_as_inline(input)
14    }
15}
16
17impl<const N: usize> ParseInline<ReflessInput<'_>> for [u8; N] {
18    fn parse_inline(input: &mut ReflessInput) -> crate::Result<Self> {
19        input.parse_chunk().copied()
20    }
21}
22
23impl<const N: usize> Tagged for [u8; N] {}
24
25impl<const N: usize> ReflessObject for [u8; N] {}
26
27impl<const N: usize> ReflessInline for [u8; N] {}
28
29impl<const N: usize> Size for [u8; N]
30where
31    typenum::generic_const_mappings::Const<N>: ToUInt<Output: Unsigned>,
32{
33    const SIZE: usize = N;
34    type Size = typenum::generic_const_mappings::U<N>;
35}
36
37impl ToOutput for Vec<u8> {
38    fn to_output(&self, output: &mut dyn Output) {
39        output.write(self);
40    }
41}
42
43impl Parse<ReflessInput<'_>> for Vec<u8> {
44    fn parse(input: ReflessInput) -> crate::Result<Self> {
45        Ok(input.parse_all()?.into())
46    }
47}
48
49impl Tagged for Vec<u8> {}
50
51impl ReflessObject for Vec<u8> {}