stream_io/standard/writer/
mod.rs1use super::*;
2use std::collections::VecDeque;
3
4use concat_idents::concat_idents;
5
6#[allow(unused_variables)]
7impl StreamWriter for u8 {
8 fn write_to<W: Write>(&self, buffer: &mut W, order: ByteOrder) -> Result<()> {
9 buffer.write_u8(*self)
10 }
11}
12#[allow(unused_variables)]
13impl StreamWriter for i8 {
14 fn write_to<W: Write>(&self, buffer: &mut W, order: ByteOrder) -> Result<()> {
15 buffer.write_i8(*self)
16 }
17}
18
19macro_rules! w_number {
20 ($($t:ty),*) => {
21 $(
22 impl StreamWriter for $t {
23 fn write_to<W: Write>(&self, buffer: &mut W, order: ByteOrder) -> Result<()> {
24 concat_idents!(write_fn = write_, $t {
25 match order {
26 ByteOrder::BigEndian => buffer.write_fn::<BigEndian>(*self),
27 ByteOrder::LittleEndian => buffer.write_fn::<LittleEndian>(*self),
28 }
29 })
30 }
31 }
32 )*
33 };
34}
35
36w_number![u16, u32, u64, u128];
37w_number![i16, i32, i64, i128];
38w_number![f32, f64];
39
40macro_rules! w_vector {
41 ($($t:ty),*) => {
42 $(
43 impl<T> StreamWriter for $t
44 where
45 T: StreamWriter
46 {
47 fn write_to<W: Write>(&self, buffer: &mut W, order: ByteOrder) -> Result<()> {
48 (self.len() as u32).write_to(buffer, order)?;
49 for item in self {
50 item.write_to(buffer, order)?;
51 }
52 Ok(())
53 }
54 }
55 )*
56 };
57}
58
59w_vector![Vec<T>, VecDeque<T>];