1use std::io;
2
3use crate::{Endian, write::Writable};
4
5pub trait WriteExt: io::Write {
7 fn write_ty<W: Writable>(&mut self, value: &W, endian: Endian) -> io::Result<()>;
9 fn write_ty_be<W: Writable>(&mut self, value: &W) -> io::Result<()>;
11 fn write_ty_le<W: Writable>(&mut self, value: &W) -> io::Result<()>;
13 fn write_ty_ne<W: Writable>(&mut self, value: &W) -> io::Result<()>;
15}
16
17impl<T: io::Write> WriteExt for T {
18 #[inline(always)]
19 fn write_ty<W: Writable>(&mut self, value: &W, endian: Endian) -> io::Result<()> {
20 value.write(self, endian)
21 }
22 #[inline(always)]
23 fn write_ty_be<W: Writable>(&mut self, value: &W) -> io::Result<()> {
24 value.write(self, Endian::Big)
25 }
26 #[inline(always)]
27 fn write_ty_le<W: Writable>(&mut self, value: &W) -> io::Result<()> {
28 value.write(self, Endian::Little)
29 }
30 #[inline(always)]
31 fn write_ty_ne<W: Writable>(&mut self, value: &W) -> io::Result<()> {
32 value.write(self, Endian::Native)
33 }
34}