1
2use std::io;
3
4use conversions::u::*;
5use conversions::i::*;
6use conversions::f::*;
7
8pub trait Write
9{
10 fn write_usize(&mut self, val: usize)-> io::Result<()>;
12 fn write_isize(&mut self, val: isize)-> io::Result<()>;
13
14 fn write_u8(&mut self, val: u8)-> io::Result<()>;
16 fn write_i8(&mut self, val: i8)-> io::Result<()>;
17
18 fn write_u16(&mut self, val: u16)-> io::Result<()>;
20 fn write_i16(&mut self, val: i16)-> io::Result<()>;
21
22 fn write_u32(&mut self, val: u32)-> io::Result<()>;
24 fn write_i32(&mut self, val: i32)-> io::Result<()>;
25 fn write_f32(&mut self, val: f32)-> io::Result<()>;
26
27 fn write_u64(&mut self, val: u64)-> io::Result<()>;
29 fn write_i64(&mut self, val: i64)-> io::Result<()>;
30 fn write_f64(&mut self, val: f64)-> io::Result<()>;
31}
32
33impl<T> Write for T
34 where T: io::Write
35{
36 #[cfg(target_pointer_width = "64")]
40 fn write_usize(&mut self, val: usize)-> io::Result<()>
41 {
42 self.write_u64(val as u64)
43 }
44
45 #[cfg(target_pointer_width = "32")]
46 fn write_usize(&mut self, val: usize)-> io::Result<()>
47 {
48 self.write_u32(val as u32)
49 }
50
51 #[cfg(target_pointer_width = "64")]
52 fn write_isize(&mut self, val: isize)-> io::Result<()>
53 {
54 self.write_i64(val as i64)
55 }
56
57 #[cfg(target_pointer_width = "32")]
58 fn write_isize(&mut self, val: isize)-> io::Result<()>
59 {
60 self.write_i32(val as i32)
61 }
62
63 fn write_u8(&mut self, val: u8)-> io::Result<()>
67 {
68 self.write_all(&[val])
69 }
70
71 fn write_i8(&mut self, val: i8)-> io::Result<()>
72 {
73 self.write_all(&[val as u8])
74 }
75
76 fn write_u16(&mut self, val: u16)-> io::Result<()>
80 {
81 self.write_all(&u16_to_bytes(val))
82 }
83
84 fn write_i16(&mut self, val: i16)-> io::Result<()>
85 {
86 self.write_all(&i16_to_bytes(val))
87 }
88
89 fn write_u32(&mut self, val: u32)-> io::Result<()>
93 {
94 self.write_all(&u32_to_bytes(val))
95 }
96
97 fn write_i32(&mut self, val: i32)-> io::Result<()>
98 {
99 self.write_all(&i32_to_bytes(val))
100 }
101
102 fn write_f32(&mut self, val: f32)-> io::Result<()>
103 {
104 self.write_all(&f32_to_bytes(val))
105 }
106
107 fn write_u64(&mut self, val: u64)-> io::Result<()>
111 {
112 self.write_all(&u64_to_bytes(val))
113 }
114
115 fn write_i64(&mut self, val: i64)-> io::Result<()>
116 {
117 self.write_all(&i64_to_bytes(val))
118 }
119
120 fn write_f64(&mut self, val: f64)-> io::Result<()>
121 {
122 self.write_all(&f64_to_bytes(val))
123 }
124}