@@ -52,20 +52,20 @@ pub type pthread_rwlock_t = usize;
52
52
pub type pthread_rwlockattr_t = usize ;
53
53
54
54
s_no_extra_traits ! {
55
- pub struct dirent {
55
+ pub struct dirent {
56
56
pub d_ino: :: c_long,
57
57
pub d_off: off_t,
58
58
pub d_reclen: u16 ,
59
59
pub d_name: [ :: c_char; 256 ] ,
60
60
}
61
61
62
- // Dummy
62
+ // Dummy
63
63
pub struct sockaddr_un {
64
64
pub sun_family: sa_family_t,
65
65
pub sun_path: [ :: c_char; 108 ] ,
66
66
}
67
67
68
- pub struct sockaddr {
68
+ pub struct sockaddr {
69
69
pub sa_len: u8 ,
70
70
pub sa_family: sa_family_t,
71
71
pub sa_data: [ :: c_char; 14 ] ,
@@ -258,6 +258,46 @@ cfg_if! {
258
258
}
259
259
}
260
260
261
+ impl PartialEq for sockaddr_storage {
262
+ fn eq( & self , other: & sockaddr_storage) -> bool {
263
+ self . s2_len == other. s2_len
264
+ && self . ss_family == other. ss_family
265
+ && self . s2_data1
266
+ . iter( )
267
+ . zip( other. s2_data1. iter( ) )
268
+ . all( |( a, b) | a == b)
269
+ && self . s2_data2
270
+ . iter( )
271
+ . zip( other. s2_data2. iter( ) )
272
+ . all( |( a, b) | a == b)
273
+ && self . s2_data3
274
+ . iter( )
275
+ . zip( other. s2_data3. iter( ) )
276
+ . all( |( a, b) | a == b)
277
+ }
278
+ }
279
+ impl Eq for sockaddr_storage { }
280
+ impl :: fmt:: Debug for sockaddr_storage {
281
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
282
+ f. debug_struct( "sockaddr_storage" )
283
+ . field( "s2_len" , & self . s2_len)
284
+ . field( "ss_family" , & self . ss_family)
285
+ // FIXME: .field("s2_data1", &self.s2_data1)
286
+ // FIXME: .field("s2_data2", &self.s2_data2)
287
+ // FIXME: .field("s2_data3", &self.s2_data3)
288
+ . finish( )
289
+ }
290
+ }
291
+ impl :: hash:: Hash for sockaddr_storage {
292
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
293
+ self . s2_len. hash( state) ;
294
+ self . ss_family. hash( state) ;
295
+ self . s2_data1. hash( state) ;
296
+ self . s2_data2. hash( state) ;
297
+ self . s2_data3. hash( state) ;
298
+ }
299
+ }
300
+
261
301
impl PartialEq for stat {
262
302
fn eq( & self , other: & stat) -> bool {
263
303
self . st_dev == other. st_dev
0 commit comments