@@ -42,6 +42,7 @@ pub trait Write {
42
42
fn write_all ( & mut self , buf : & [ u8 ] ) -> Result < ( ) > ;
43
43
}
44
44
45
+ /// Blanket impls for when `std` is enabled.
45
46
#[ cfg( feature = "std" ) ]
46
47
mod std_impls {
47
48
use crate :: io:: { BufRead , Read , Write } ;
@@ -85,6 +86,44 @@ mod std_impls {
85
86
}
86
87
}
87
88
89
+ /// Blanket impls for when `embedded-io` is enabled and `std` is not.
90
+ #[ cfg( all( feature = "embedded-io" , not( feature = "std" ) ) ) ]
91
+ mod embedded_io_impls {
92
+ use crate :: io:: { BufRead , Read , Write } ;
93
+ use crate :: Result ;
94
+ use embedded_io:: Error ;
95
+
96
+ impl < W : embedded_io:: Write > Write for W {
97
+ fn write_all ( & mut self , buf : & [ u8 ] ) -> Result < ( ) > {
98
+ embedded_io:: Write :: write_all ( self , buf) . map_err ( |e| match e {
99
+ embedded_io:: WriteAllError :: WriteZero => {
100
+ crate :: Error :: from_kind ( crate :: ErrorKind :: Failed )
101
+ }
102
+ embedded_io:: WriteAllError :: Other ( e) => crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) ,
103
+ } ) ?;
104
+ Ok ( ( ) )
105
+ }
106
+ }
107
+
108
+ impl < R : embedded_io:: Read > Read for R {
109
+ fn read ( & mut self , buf : & mut [ u8 ] ) -> Result < usize > {
110
+ embedded_io:: Read :: read ( self , buf) . map_err ( |e| crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) )
111
+ }
112
+ }
113
+
114
+ impl < R : embedded_io:: BufRead + embedded_io:: Read > BufRead for R {
115
+ fn fill_buf ( & mut self ) -> Result < & [ u8 ] > {
116
+ embedded_io:: BufRead :: fill_buf ( self )
117
+ . map_err ( |e| crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) )
118
+ }
119
+
120
+ fn consume ( & mut self , amt : usize ) {
121
+ embedded_io:: BufRead :: consume ( self , amt)
122
+ }
123
+ }
124
+ }
125
+
126
+ /// Fallback impls, for when neither `std` nor `embedded-io` is enabled.
88
127
#[ cfg( not( any( feature = "std" , feature = "embedded-io" ) ) ) ]
89
128
mod no_std_impls {
90
129
use crate :: io:: { BufRead , Read , Write } ;
@@ -161,39 +200,3 @@ mod no_std_impls {
161
200
}
162
201
}
163
202
}
164
-
165
- #[ cfg( all( feature = "embedded-io" , not( feature = "std" ) ) ) ]
166
- mod no_std_impls {
167
- use crate :: io:: { BufRead , Read , Write } ;
168
- use crate :: Result ;
169
- use embedded_io:: Error ;
170
-
171
- impl < W : embedded_io:: Write > Write for W {
172
- fn write_all ( & mut self , buf : & [ u8 ] ) -> Result < ( ) > {
173
- embedded_io:: Write :: write_all ( self , buf) . map_err ( |e| match e {
174
- embedded_io:: WriteAllError :: WriteZero => {
175
- crate :: Error :: from_kind ( crate :: ErrorKind :: Failed )
176
- }
177
- embedded_io:: WriteAllError :: Other ( e) => crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) ,
178
- } ) ?;
179
- Ok ( ( ) )
180
- }
181
- }
182
-
183
- impl < R : embedded_io:: Read > Read for R {
184
- fn read ( & mut self , buf : & mut [ u8 ] ) -> Result < usize > {
185
- embedded_io:: Read :: read ( self , buf) . map_err ( |e| crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) )
186
- }
187
- }
188
-
189
- impl < R : embedded_io:: BufRead + embedded_io:: Read > BufRead for R {
190
- fn fill_buf ( & mut self ) -> Result < & [ u8 ] > {
191
- embedded_io:: BufRead :: fill_buf ( self )
192
- . map_err ( |e| crate :: Error :: from_kind ( e. kind ( ) . into ( ) ) )
193
- }
194
-
195
- fn consume ( & mut self , amt : usize ) {
196
- embedded_io:: BufRead :: consume ( self , amt)
197
- }
198
- }
199
- }
0 commit comments