diff options
author | Noah <33094578+coolreader18@users.noreply.github.com> | 2021-03-12 21:59:53 -0600 |
---|---|---|
committer | Noah <33094578+coolreader18@users.noreply.github.com> | 2021-03-12 23:14:05 -0600 |
commit | ed45c2649b848bc2df48ba10d68194d45da03b75 (patch) | |
tree | 6585743974a719f5aaf03b305aef0159a7f68068 /src/unix/linux_like/linux/mod.rs | |
parent | 3f6b151eed76dada19da7bcbc3d382a5366dd14e (diff) | |
download | rust-libc-ed45c2649b848bc2df48ba10d68194d45da03b75.tar.gz |
Move some structs to s_no_extra_traits due to large arrays
Diffstat (limited to 'src/unix/linux_like/linux/mod.rs')
-rw-r--r-- | src/unix/linux_like/linux/mod.rs | 98 |
1 files changed, 82 insertions, 16 deletions
diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index bb4961200b..c526d0207a 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -297,27 +297,11 @@ s! { pub effect_id: ::__u32, } - pub struct uinput_setup { - pub id: input_id, - pub name: [::c_char; UINPUT_MAX_NAME_SIZE], - pub ff_effects_max: ::__u32, - } - pub struct uinput_abs_setup { pub code: ::__u16, pub absinfo: input_absinfo, } - pub struct uinput_user_dev { - pub name: [::c_char; UINPUT_MAX_NAME_SIZE], - pub id: input_id, - pub ff_effects_max: ::__u32, - pub absmax: [::__s32; ABS_CNT], - pub absmin: [::__s32; ABS_CNT], - pub absfuzz: [::__s32; ABS_CNT], - pub absflat: [::__s32; ABS_CNT], - } - pub struct dl_phdr_info { #[cfg(target_pointer_width = "64")] pub dlpi_addr: Elf64_Addr, @@ -591,6 +575,22 @@ s_no_extra_traits! { pub salg_name: [::c_uchar; 64], } + pub struct uinput_setup { + pub id: input_id, + pub name: [::c_char; UINPUT_MAX_NAME_SIZE], + pub ff_effects_max: ::__u32, + } + + pub struct uinput_user_dev { + pub name: [::c_char; UINPUT_MAX_NAME_SIZE], + pub id: input_id, + pub ff_effects_max: ::__u32, + pub absmax: [::__s32; ABS_CNT], + pub absmin: [::__s32; ABS_CNT], + pub absfuzz: [::__s32; ABS_CNT], + pub absflat: [::__s32; ABS_CNT], + } + /// WARNING: The `PartialEq`, `Eq` and `Hash` implementations of this /// type are unsound and will be removed in the future. #[deprecated( @@ -861,6 +861,72 @@ cfg_if! { } } + impl PartialEq for uinput_setup { + fn eq(&self, other: &uinput_setup) -> bool { + self.id == other.id + && self.name[..] == other.name[..] + && self.ff_effects_max == other.ff_effects_max + } + } + impl Eq for uinput_setup {} + + impl ::fmt::Debug for uinput_setup { + fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { + f.debug_struct("uinput_setup") + .field("id", &self.id) + .field("name", &&self.name[..]) + .field("ff_effects_max", &self.ff_effects_max) + .finish() + } + } + + impl ::hash::Hash for uinput_setup { + fn hash<H: ::hash::Hasher>(&self, state: &mut H) { + self.id.hash(state); + self.name.hash(state); + self.ff_effects_max.hash(state); + } + } + + impl PartialEq for uinput_user_dev { + fn eq(&self, other: &uinput_user_dev) -> bool { + self.name[..] == other.name[..] + && self.id == other.id + && self.ff_effects_max == other.ff_effects_max + && self.absmax[..] == other.absmax[..] + && self.absmin[..] == other.absmin[..] + && self.absfuzz[..] == other.absfuzz[..] + && self.absflat[..] == other.absflat[..] + } + } + impl Eq for uinput_user_dev {} + + impl ::fmt::Debug for uinput_user_dev { + fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { + f.debug_struct("uinput_setup") + .field("name", &&self.name[..]) + .field("id", &self.id) + .field("ff_effects_max", &self.ff_effects_max) + .field("absmax", &&self.absmax[..]) + .field("absmin", &&self.absmin[..]) + .field("absfuzz", &&self.absfuzz[..]) + .field("absflat", &&self.absflat[..]) + .finish() + } + } + + impl ::hash::Hash for uinput_user_dev { + fn hash<H: ::hash::Hasher>(&self, state: &mut H) { + self.name.hash(state); + self.id.hash(state); + self.ff_effects_max.hash(state); + self.absmax.hash(state); + self.absmin.hash(state); + self.absfuzz.hash(state); + self.absflat.hash(state); + } + } + #[allow(deprecated)] impl af_alg_iv { fn as_slice(&self) -> &[u8] { |