object_rainbow/impls/
u8.rs1use typenum::U1;
2
3use crate::*;
4
5impl ToOutput for u8 {
6 fn to_output(&self, output: &mut dyn crate::Output) {
7 if output.is_real() {
8 output.write(&[*self]);
9 }
10 }
11}
12
13impl InlineOutput for u8 {
14 fn slice_to_output(slice: &[Self], output: &mut dyn crate::Output)
15 where
16 Self: Sized,
17 {
18 output.write(slice);
19 }
20}
21
22impl<I: ParseInput> Parse<I> for u8 {
23 fn parse(input: I) -> crate::Result<Self> {
24 ParseInline::parse_as_inline(input)
25 }
26}
27
28impl<I: ParseInput> ParseInline<I> for u8 {
29 fn parse_inline(input: &mut I) -> crate::Result<Self> {
30 Ok(Self::from_le_bytes(*input.parse_chunk::<1>()?))
31 }
32
33 fn parse_vec(input: I) -> crate::Result<Vec<Self>> {
34 Ok(input.parse_all()?.into())
35 }
36
37 fn parse_array<const N: usize>(input: &mut I) -> crate::Result<[Self; N]> {
38 input.parse_chunk().copied()
39 }
40}
41
42impl Size for u8 {
43 type Size = U1;
44 const SIZE: usize = 1;
45}