object_rainbow/impls/
array.rs1use std::ops::Mul;
2
3use typenum::ToUInt;
4
5use crate::*;
6
7impl<T: ToOutput, const N: usize> ToOutput for [T; N] {
8 fn to_output(&self, output: &mut dyn Output) {
9 T::slice_to_output(self, output);
10 }
11}
12
13impl<T: Topological, const N: usize> Topological for [T; N] {
14 fn accept_points(&self, visitor: &mut impl PointVisitor) {
15 self.iter_accept_points(visitor);
16 }
17}
18
19impl<T: Tagged, const N: usize> Tagged for [T; N] {
20 const TAGS: Tags = T::TAGS;
21}
22
23impl<T: Size, const N: usize> Size for [T; N]
24where
25 typenum::generic_const_mappings::Const<N>:
26 ToUInt<Output: Unsigned + Mul<T::Size, Output: Unsigned>>,
27{
28 const SIZE: usize = T::SIZE * N;
29 type Size =
30 <<typenum::generic_const_mappings::Const<N> as ToUInt>::Output as Mul<T::Size>>::Output;
31}