@@ -4,9 +4,9 @@ use no_std_io::io::{Read, Write};
4
4
5
5
use bitvec:: prelude:: * ;
6
6
7
- use crate :: { DekuError , DekuReader , DekuWrite , DekuWriter } ;
8
7
use crate :: reader:: Reader ;
9
8
use crate :: writer:: Writer ;
9
+ use crate :: { DekuError , DekuReader , DekuWrite , DekuWriter } ;
10
10
11
11
impl < ' a , Ctx > DekuReader < ' a , Ctx > for Ipv4Addr
12
12
where
@@ -21,13 +21,13 @@ where
21
21
}
22
22
}
23
23
24
- impl < Ctx > DekuWrite < Ctx > for Ipv4Addr
24
+ impl < Ctx > DekuWriter < Ctx > for Ipv4Addr
25
25
where
26
- u32 : DekuWrite < Ctx > ,
26
+ u32 : DekuWriter < Ctx > ,
27
27
{
28
- fn write ( & self , output : & mut BitVec < u8 , Msb0 > , ctx : Ctx ) -> Result < ( ) , DekuError > {
28
+ fn to_writer < W : Write > ( & self , writer : & mut Writer < W > , ctx : Ctx ) -> Result < ( ) , DekuError > {
29
29
let ip: u32 = ( * self ) . into ( ) ;
30
- ip. write ( output , ctx)
30
+ ip. to_writer ( writer , ctx)
31
31
}
32
32
}
33
33
44
44
}
45
45
}
46
46
47
- impl < Ctx > DekuWrite < Ctx > for Ipv6Addr
48
- where
49
- u128 : DekuWrite < Ctx > ,
50
- {
51
- fn write ( & self , output : & mut BitVec < u8 , Msb0 > , ctx : Ctx ) -> Result < ( ) , DekuError > {
52
- let ip: u128 = ( * self ) . into ( ) ;
53
- ip. write ( output, ctx)
54
- }
55
- }
56
-
57
47
impl < Ctx > DekuWriter < Ctx > for Ipv6Addr
58
48
where
59
49
u128 : DekuWriter < Ctx > ,
64
54
}
65
55
}
66
56
67
- impl < Ctx > DekuWrite < Ctx > for IpAddr
68
- where
69
- Ipv6Addr : DekuWrite < Ctx > ,
70
- Ipv4Addr : DekuWrite < Ctx > ,
71
- {
72
- fn write ( & self , output : & mut BitVec < u8 , Msb0 > , ctx : Ctx ) -> Result < ( ) , DekuError > {
73
- match self {
74
- IpAddr :: V4 ( ipv4) => ipv4. write ( output, ctx) ,
75
- IpAddr :: V6 ( ipv6) => ipv6. write ( output, ctx) ,
76
- }
77
- }
78
- }
79
-
80
57
impl < Ctx > DekuWriter < Ctx > for IpAddr
81
58
where
82
59
Ipv6Addr : DekuWriter < Ctx > ,
@@ -108,10 +85,6 @@ mod tests {
108
85
let res_read = Ipv4Addr :: from_reader_with_ctx ( & mut reader, endian) . unwrap ( ) ;
109
86
assert_eq ! ( expected, res_read) ;
110
87
111
- let mut res_write = bitvec ! [ u8 , Msb0 ; ] ;
112
- res_read. write ( & mut res_write, endian) . unwrap ( ) ;
113
- assert_eq ! ( input. to_vec( ) , res_write. into_vec( ) ) ;
114
-
115
88
let mut out_buf = vec ! [ ] ;
116
89
let mut writer = Writer :: new ( & mut out_buf) ;
117
90
res_read. to_writer ( & mut writer, endian) . unwrap ( ) ;
@@ -128,10 +101,6 @@ mod tests {
128
101
let res_read = Ipv6Addr :: from_reader_with_ctx ( & mut reader, endian) . unwrap ( ) ;
129
102
assert_eq ! ( expected, res_read) ;
130
103
131
- let mut res_write = bitvec ! [ u8 , Msb0 ; ] ;
132
- res_read. write ( & mut res_write, endian) . unwrap ( ) ;
133
- assert_eq ! ( input. to_vec( ) , res_write. into_vec( ) ) ;
134
-
135
104
let mut out_buf = vec ! [ ] ;
136
105
let mut writer = Writer :: new ( & mut out_buf) ;
137
106
res_read. to_writer ( & mut writer, endian) . unwrap ( ) ;
@@ -141,26 +110,12 @@ mod tests {
141
110
#[ test]
142
111
fn test_ip_addr_write ( ) {
143
112
let ip_addr = IpAddr :: V4 ( Ipv4Addr :: new ( 145 , 254 , 160 , 237 ) ) ;
144
- let mut ret_write = bitvec ! [ u8 , Msb0 ; ] ;
145
- ip_addr. write ( & mut ret_write, Endian :: Little ) . unwrap ( ) ;
146
- assert_eq ! ( vec![ 237 , 160 , 254 , 145 ] , ret_write. into_vec( ) ) ;
147
113
148
114
let mut out_buf = vec ! [ ] ;
149
115
let mut writer = Writer :: new ( & mut out_buf) ;
150
116
ip_addr. to_writer ( & mut writer, Endian :: Little ) . unwrap ( ) ;
151
117
assert_eq ! ( vec![ 237 , 160 , 254 , 145 ] , out_buf. to_vec( ) ) ;
152
118
153
- let ip_addr = IpAddr :: V6 ( Ipv6Addr :: new ( 0 , 0 , 0 , 0 , 0 , 0xffff , 0xc00a , 0x02ff ) ) ;
154
- let mut ret_write = bitvec ! [ u8 , Msb0 ; ] ;
155
- ip_addr. write ( & mut ret_write, Endian :: Little ) . unwrap ( ) ;
156
- assert_eq ! (
157
- vec![
158
- 0xff , 0x02 , 0x0a , 0xc0 , 0xff , 0xff , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
159
- 0x00 , 0x00
160
- ] ,
161
- ret_write. into_vec( )
162
- ) ;
163
-
164
119
let ip_addr = IpAddr :: V6 ( Ipv6Addr :: new ( 0 , 0 , 0 , 0 , 0 , 0xffff , 0xc00a , 0x02ff ) ) ;
165
120
let mut out_buf = vec ! [ ] ;
166
121
let mut writer = Writer :: new ( & mut out_buf) ;
0 commit comments