Skip to content

Commit 79ae121

Browse files
committed
Implement Debug for all types
1 parent 868a85d commit 79ae121

File tree

17 files changed

+463
-9
lines changed

17 files changed

+463
-9
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ libc = { version = "0.2", features = ["align"] }
4545
```
4646

4747
All structs implemented by the libc crate have the `Copy` and `Clone` traits
48-
implemented for them. The additional traits of `PartialEq` and `Eq` can be
49-
enabled with the *extra_traits* feature (requires Rust 1.25 or newer):
48+
implemented for them. The additional traits of `Debug, `Eq`, and `PartialEq`
49+
can be enabled with the *extra_traits* feature (requires Rust 1.25 or newer):
5050

5151
```toml
5252
[dependencies]

src/macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ macro_rules! s {
3939
__item! {
4040
#[repr(C)]
4141
$(#[$attr])*
42-
#[cfg_attr(feature = "extra_traits", derive(Eq, PartialEq))]
42+
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, PartialEq))]
4343
pub $t $i { $($field)* }
4444
}
4545
impl ::dox::Copy for $i {}

src/unix/bsd/apple/b32.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ impl PartialEq for pthread_attr_t {
6464
}
6565
#[cfg(feature = "extra_traits")]
6666
impl Eq for pthread_attr_t {}
67+
#[cfg(feature = "extra_traits")]
68+
impl std::fmt::Debug for pthread_attr_t {
69+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
70+
f.debug_struct("pthread_attr_t")
71+
.field("__sig", &self.__sig)
72+
// FIXME: .field("__opaque", &self.__opaque)
73+
.finish()
74+
}
75+
}
6776

6877
pub const __PTHREAD_MUTEX_SIZE__: usize = 40;
6978
pub const __PTHREAD_COND_SIZE__: usize = 24;

src/unix/bsd/apple/b64.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ impl PartialEq for pthread_attr_t {
6969
}
7070
#[cfg(feature = "extra_traits")]
7171
impl Eq for pthread_attr_t {}
72+
#[cfg(feature = "extra_traits")]
73+
impl std::fmt::Debug for pthread_attr_t {
74+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
75+
f.debug_struct("pthread_attr_t")
76+
.field("__sig", &self.__sig)
77+
// FIXME: .field("__opaque", &self.__opaque)
78+
.finish()
79+
}
80+
}
7281

7382
pub const __PTHREAD_MUTEX_SIZE__: usize = 56;
7483
pub const __PTHREAD_COND_SIZE__: usize = 40;

src/unix/bsd/apple/mod.rs

Lines changed: 108 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -608,12 +608,6 @@ impl std::fmt::Debug for semun {
608608
}
609609
}
610610
#[cfg(feature = "extra_traits")]
611-
impl std::hash::Hash for semun {
612-
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
613-
unsafe { self.val.hash(state) };
614-
}
615-
}
616-
#[cfg(feature = "extra_traits")]
617611
impl PartialEq for proc_threadinfo {
618612
fn eq(&self, other: &proc_threadinfo) -> bool {
619613
self.pth_user_time == other.pth_user_time
@@ -636,6 +630,24 @@ impl PartialEq for proc_threadinfo {
636630
#[cfg(feature = "extra_traits")]
637631
impl Eq for proc_threadinfo {}
638632
#[cfg(feature = "extra_traits")]
633+
impl std::fmt::Debug for proc_threadinfo {
634+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
635+
f.debug_struct("proc_threadinfo")
636+
.field("pth_user_time", &self.pth_user_time)
637+
.field("pth_system_time", &self.pth_system_time)
638+
.field("pth_cpu_usage", &self.pth_cpu_usage)
639+
.field("pth_policy", &self.pth_policy)
640+
.field("pth_run_state", &self.pth_run_state)
641+
.field("pth_flags", &self.pth_flags)
642+
.field("pth_sleep_time", &self.pth_sleep_time)
643+
.field("pth_curpri", &self.pth_curpri)
644+
.field("pth_priority", &self.pth_priority)
645+
.field("pth_maxpriority", &self.pth_maxpriority)
646+
// FIXME: .field("pth_name", &self.pth_name)
647+
.finish()
648+
}
649+
}
650+
#[cfg(feature = "extra_traits")]
639651
impl PartialEq for statfs {
640652
fn eq(&self, other: &statfs) -> bool {
641653
self.f_bsize == other.f_bsize
@@ -667,6 +679,29 @@ impl PartialEq for statfs {
667679
#[cfg(feature = "extra_traits")]
668680
impl Eq for statfs {}
669681
#[cfg(feature = "extra_traits")]
682+
impl std::fmt::Debug for statfs {
683+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
684+
f.debug_struct("statfs")
685+
.field("f_bsize", &self.f_bsize)
686+
.field("f_iosize", &self.f_iosize)
687+
.field("f_blocks", &self.f_blocks)
688+
.field("f_bfree", &self.f_bfree)
689+
.field("f_bavail", &self.f_bavail)
690+
.field("f_files", &self.f_files)
691+
.field("f_ffree", &self.f_ffree)
692+
.field("f_fsid", &self.f_fsid)
693+
.field("f_owner", &self.f_owner)
694+
.field("f_flags", &self.f_flags)
695+
.field("f_fssubtype", &self.f_fssubtype)
696+
.field("f_fstypename", &self.f_fstypename)
697+
.field("f_type", &self.f_type)
698+
// FIXME: .field("f_mntonname", &self.f_mntonname)
699+
// FIXME: .field("f_mntfromname", &self.f_mntfromname)
700+
.field("f_reserved", &self.f_reserved)
701+
.finish()
702+
}
703+
}
704+
#[cfg(feature = "extra_traits")]
670705
impl PartialEq for dirent {
671706
fn eq(&self, other: &dirent) -> bool {
672707
self.d_ino == other.d_ino
@@ -684,6 +719,19 @@ impl PartialEq for dirent {
684719
#[cfg(feature = "extra_traits")]
685720
impl Eq for dirent {}
686721
#[cfg(feature = "extra_traits")]
722+
impl std::fmt::Debug for dirent {
723+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
724+
f.debug_struct("dirent")
725+
.field("d_ino", &self.d_ino)
726+
.field("d_seekoff", &self.d_seekoff)
727+
.field("d_reclen", &self.d_reclen)
728+
.field("d_namlen", &self.d_namlen)
729+
.field("d_type", &self.d_type)
730+
// FIXME: .field("d_name", &self.d_name)
731+
.finish()
732+
}
733+
}
734+
#[cfg(feature = "extra_traits")]
687735
impl PartialEq for pthread_rwlock_t {
688736
fn eq(&self, other: &pthread_rwlock_t) -> bool {
689737
self.__sig == other.__sig
@@ -697,6 +745,15 @@ impl PartialEq for pthread_rwlock_t {
697745
#[cfg(feature = "extra_traits")]
698746
impl Eq for pthread_rwlock_t {}
699747
#[cfg(feature = "extra_traits")]
748+
impl std::fmt::Debug for pthread_rwlock_t {
749+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
750+
f.debug_struct("pthread_rwlock_t")
751+
.field("__sig", &self.__sig)
752+
// FIXME: .field("__opaque", &self.__opaque)
753+
.finish()
754+
}
755+
}
756+
#[cfg(feature = "extra_traits")]
700757
impl PartialEq for pthread_mutex_t {
701758
fn eq(&self, other: &pthread_mutex_t) -> bool {
702759
self.__sig == other.__sig
@@ -710,6 +767,15 @@ impl PartialEq for pthread_mutex_t {
710767
#[cfg(feature = "extra_traits")]
711768
impl Eq for pthread_mutex_t {}
712769
#[cfg(feature = "extra_traits")]
770+
impl std::fmt::Debug for pthread_mutex_t {
771+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
772+
f.debug_struct("pthread_mutex_t")
773+
.field("__sig", &self.__sig)
774+
// FIXME: .field("__opaque", &self.__opaque)
775+
.finish()
776+
}
777+
}
778+
#[cfg(feature = "extra_traits")]
713779
impl PartialEq for pthread_cond_t {
714780
fn eq(&self, other: &pthread_cond_t) -> bool {
715781
self.__sig == other.__sig
@@ -723,6 +789,15 @@ impl PartialEq for pthread_cond_t {
723789
#[cfg(feature = "extra_traits")]
724790
impl Eq for pthread_cond_t {}
725791
#[cfg(feature = "extra_traits")]
792+
impl std::fmt::Debug for pthread_cond_t {
793+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
794+
f.debug_struct("pthread_cond_t")
795+
.field("__sig", &self.__sig)
796+
// FIXME: .field("__opaque", &self.__opaque)
797+
.finish()
798+
}
799+
}
800+
#[cfg(feature = "extra_traits")]
726801
impl PartialEq for sockaddr_storage {
727802
fn eq(&self, other: &sockaddr_storage) -> bool {
728803
self.ss_len == other.ss_len
@@ -743,6 +818,18 @@ impl PartialEq for sockaddr_storage {
743818
#[cfg(feature = "extra_traits")]
744819
impl Eq for sockaddr_storage {}
745820
#[cfg(feature = "extra_traits")]
821+
impl std::fmt::Debug for sockaddr_storage {
822+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
823+
f.debug_struct("sockaddr_storage")
824+
.field("ss_len", &self.ss_len)
825+
.field("ss_family", &self.ss_family)
826+
.field("__ss_pad1", &self.__ss_pad1)
827+
.field("__ss_align", &self.__ss_align)
828+
// FIXME: .field("__ss_pad2", &self.__ss_pad2)
829+
.finish()
830+
}
831+
}
832+
#[cfg(feature = "extra_traits")]
746833
impl PartialEq for utmpx {
747834
fn eq(&self, other: &utmpx) -> bool {
748835
self.ut_user
@@ -764,6 +851,21 @@ impl PartialEq for utmpx {
764851
}
765852
#[cfg(feature = "extra_traits")]
766853
impl Eq for utmpx {}
854+
#[cfg(feature = "extra_traits")]
855+
impl std::fmt::Debug for utmpx {
856+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
857+
f.debug_struct("utmpx")
858+
// FIXME: .field("ut_user", &self.ut_user)
859+
.field("ut_id", &self.ut_id)
860+
.field("ut_line", &self.ut_line)
861+
.field("ut_pid", &self.ut_pid)
862+
.field("ut_type", &self.ut_type)
863+
.field("ut_tv", &self.ut_tv)
864+
// FIXME: .field("ut_host", &self.ut_host)
865+
.field("ut_pad", &self.ut_pad)
866+
.finish()
867+
}
868+
}
767869

768870
pub const _UTX_USERSIZE: usize = 256;
769871
pub const _UTX_LINESIZE: usize = 32;

src/unix/bsd/mod.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,16 @@ impl PartialEq for sockaddr_un {
152152
#[cfg(feature = "extra_traits")]
153153
impl Eq for sockaddr_un {}
154154
#[cfg(feature = "extra_traits")]
155+
impl std::fmt::Debug for sockaddr_un {
156+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
157+
f.debug_struct("sockaddr_un")
158+
.field("sun_len", &self.sun_len)
159+
.field("sun_family", &self.sun_family)
160+
// FIXME: .field("sun_path", &self.sun_path)
161+
.finish()
162+
}
163+
}
164+
#[cfg(feature = "extra_traits")]
155165
impl PartialEq for utsname {
156166
fn eq(&self, other: &utsname) -> bool {
157167
self.sysname
@@ -182,6 +192,18 @@ impl PartialEq for utsname {
182192
}
183193
#[cfg(feature = "extra_traits")]
184194
impl Eq for utsname {}
195+
#[cfg(feature = "extra_traits")]
196+
impl std::fmt::Debug for utsname {
197+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
198+
f.debug_struct("utsname")
199+
// FIXME: .field("sysname", &self.sysname)
200+
// FIXME: .field("nodename", &self.nodename)
201+
// FIXME: .field("release", &self.release)
202+
// FIXME: .field("version", &self.version)
203+
// FIXME: .field("machine", &self.machine)
204+
.finish()
205+
}
206+
}
185207

186208
pub const LC_ALL: ::c_int = 0;
187209
pub const LC_COLLATE: ::c_int = 1;

src/unix/notbsd/android/b64/mod.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ impl PartialEq for pthread_mutex_t {
141141
#[cfg(feature = "extra_traits")]
142142
impl Eq for pthread_mutex_t {}
143143
#[cfg(feature = "extra_traits")]
144+
impl std::fmt::Debug for pthread_mutex_t {
145+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
146+
f.debug_struct("pthread_mutex_t")
147+
.field("value", &self.value)
148+
// FIXME: .field("__reserved", &self.__reserved)
149+
.finish()
150+
}
151+
}
152+
#[cfg(feature = "extra_traits")]
144153
impl PartialEq for pthread_cond_t {
145154
fn eq(&self, other: &pthread_cond_t) -> bool {
146155
self.value == other.value
@@ -154,6 +163,15 @@ impl PartialEq for pthread_cond_t {
154163
#[cfg(feature = "extra_traits")]
155164
impl Eq for pthread_cond_t {}
156165
#[cfg(feature = "extra_traits")]
166+
impl std::fmt::Debug for pthread_cond_t {
167+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
168+
f.debug_struct("pthread_cond_t")
169+
.field("value", &self.value)
170+
// FIXME: .field("__reserved", &self.__reserved)
171+
.finish()
172+
}
173+
}
174+
#[cfg(feature = "extra_traits")]
157175
impl PartialEq for pthread_rwlock_t {
158176
fn eq(&self, other: &pthread_rwlock_t) -> bool {
159177
self.numLocks == other.numLocks
@@ -170,6 +188,19 @@ impl PartialEq for pthread_rwlock_t {
170188
}
171189
#[cfg(feature = "extra_traits")]
172190
impl Eq for pthread_rwlock_t {}
191+
#[cfg(feature = "extra_traits")]
192+
impl std::fmt::Debug for pthread_rwlock_t {
193+
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
194+
f.debug_struct("pthread_rwlock_t")
195+
.field("numLocks", &self.numLocks)
196+
.field("writerThreadId", &self.writerThreadId)
197+
.field("pendingReaders", &self.pendingReaders)
198+
.field("pendingWriters", &self.pendingWriters)
199+
.field("attr", &self.attr)
200+
// FIXME: .field("__reserved", &self.__reserved)
201+
.finish()
202+
}
203+
}
173204

174205
pub const RTLD_GLOBAL: ::c_int = 0x00100;
175206
pub const RTLD_NOW: ::c_int = 2;

0 commit comments

Comments
 (0)