Skip to content

Commit 26665e7

Browse files
committed
Implement extra traits for ucontext_t
1 parent de8654b commit 26665e7

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

src/unix/linux_like/linux/gnu/b32/arm/align.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,38 @@ s_no_extra_traits! {
1616
pub uc_regspace: [::c_ulong; 128],
1717
}
1818
}
19+
20+
cfg_if! {
21+
if #[cfg(feature = "extra_traits")] {
22+
impl PartialEq for ucontext_t {
23+
fn eq(&self, other: &ucontext_t) -> bool {
24+
self.uc_flags == other.uc_flags
25+
&& self.uc_link == other.uc_link
26+
&& self.uc_stack == other.uc_stack
27+
&& self.uc_mcontext == other.uc_mcontext
28+
&& self.uc_sigmask == other.uc_sigmask
29+
}
30+
}
31+
impl Eq for ucontext_t {}
32+
impl ::fmt::Debug for ucontext_t {
33+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
34+
f.debug_struct("ucontext_t")
35+
.field("uc_flags", &self.uc_link)
36+
.field("uc_link", &self.uc_link)
37+
.field("uc_stack", &self.uc_stack)
38+
.field("uc_mcontext", &self.uc_mcontext)
39+
.field("uc_sigmask", &self.uc_sigmask)
40+
.finish()
41+
}
42+
}
43+
impl ::hash::Hash for ucontext_t {
44+
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
45+
self.uc_flags.hash(state);
46+
self.uc_link.hash(state);
47+
self.uc_stack.hash(state);
48+
self.uc_mcontext.hash(state);
49+
self.uc_sigmask.hash(state);
50+
}
51+
}
52+
}
53+
}

src/unix/linux_like/linux/musl/b32/arm/mod.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,41 @@ s_no_extra_traits! {
188188
}
189189
}
190190

191+
cfg_if! {
192+
if #[cfg(feature = "extra_traits")] {
193+
impl PartialEq for ucontext_t {
194+
fn eq(&self, other: &ucontext_t) -> bool {
195+
self.uc_flags == other.uc_flags
196+
&& self.uc_link == other.uc_link
197+
&& self.uc_stack == other.uc_stack
198+
&& self.uc_mcontext == other.uc_mcontext
199+
&& self.uc_sigmask == other.uc_sigmask
200+
}
201+
}
202+
impl Eq for ucontext_t {}
203+
impl ::fmt::Debug for ucontext_t {
204+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
205+
f.debug_struct("ucontext_t")
206+
.field("uc_flags", &self.uc_link)
207+
.field("uc_link", &self.uc_link)
208+
.field("uc_stack", &self.uc_stack)
209+
.field("uc_mcontext", &self.uc_mcontext)
210+
.field("uc_sigmask", &self.uc_sigmask)
211+
.finish()
212+
}
213+
}
214+
impl ::hash::Hash for ucontext_t {
215+
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
216+
self.uc_flags.hash(state);
217+
self.uc_link.hash(state);
218+
self.uc_stack.hash(state);
219+
self.uc_mcontext.hash(state);
220+
self.uc_sigmask.hash(state);
221+
}
222+
}
223+
}
224+
}
225+
191226
pub const SIGSTKSZ: ::size_t = 8192;
192227
pub const MINSIGSTKSZ: ::size_t = 2048;
193228

0 commit comments

Comments
 (0)