1use crate::{FromStream, ToStream, collections::SizeSettings, from_stream};
2
3use std::io::{Read, Result, Write};
4
5impl<S, T: ToStream<S>, const N: usize> ToStream<S> for [T; N] {
6 fn to_stream<W: Write>(&self, stream: &mut W) -> Result<()> {
7 for element in self {
8 element.to_stream(stream)?
9 }
10
11 Ok(())
12 }
13}
14
15impl<S, T: FromStream<S> + Default + Copy, const N: usize> FromStream<S> for [T; N] {
16 fn from_stream<R: Read>(stream: &mut R) -> Result<Self> {
17 let mut result = [Default::default(); N];
18
19 for element in &mut result {
20 *element = from_stream(stream)?
21 }
22
23 Ok(result)
24 }
25}
26
27impl<S: SizeSettings, T: ToStream<S>> ToStream<S> for [T] {
28 fn to_stream<W: Write>(&self, stream: &mut W) -> Result<()> {
29 S::size_to_stream(self.len(), stream)?;
30 for element in self {
31 element.to_stream(stream)?
32 }
33
34 Ok(())
35 }
36}