object_rainbow/impls/
generic_array.rs1use std::ops::Mul;
2
3use crate::*;
4
5impl<T: InlineOutput, N: ArrayLength> ToOutput for GenericArray<T, N> {
6 fn to_output(&self, output: &mut dyn Output) {
7 T::slice_to_output(self, output);
8 }
9}
10
11impl<T: InlineOutput, N: ArrayLength> InlineOutput for GenericArray<T, N> {}
12
13impl<T: ListHashes, N: ArrayLength> ListHashes for GenericArray<T, N> {
14 fn list_hashes(&self, f: &mut impl FnMut(Hash)) {
15 self.iter_list_hashes(f);
16 }
17}
18
19impl<T: Topological, N: ArrayLength> Topological for GenericArray<T, N> {
20 fn traverse(&self, visitor: &mut impl PointVisitor) {
21 self.iter_traverse(visitor);
22 }
23}
24
25impl<T: Tagged, N: ArrayLength> Tagged for GenericArray<T, N> {
26 const TAGS: Tags = T::TAGS;
27}
28
29impl<T: Size, N: ArrayLength> Size for GenericArray<T, N>
30where
31 N: Mul<T::Size, Output: Unsigned>,
32{
33 type Size = <N as Mul<T::Size>>::Output;
34}
35
36impl<T: ParseInline<I>, N: ArrayLength, I: ParseInput> Parse<I> for GenericArray<T, N> {
37 fn parse(input: I) -> crate::Result<Self> {
38 Self::parse_as_inline(input)
39 }
40}
41
42impl<T: ParseInline<I>, N: ArrayLength, I: ParseInput> ParseInline<I> for GenericArray<T, N> {
43 fn parse_inline(input: &mut I) -> crate::Result<Self> {
44 input.parse_generic_array()
45 }
46}