Skip to content

Commit ed45c26

Browse files
committed
Move some structs to s_no_extra_traits due to large arrays
1 parent 3f6b151 commit ed45c26

File tree

1 file changed

+82
-16
lines changed
  • src/unix/linux_like/linux

1 file changed

+82
-16
lines changed

src/unix/linux_like/linux/mod.rs

Lines changed: 82 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -297,27 +297,11 @@ s! {
297297
pub effect_id: ::__u32,
298298
}
299299

300-
pub struct uinput_setup {
301-
pub id: input_id,
302-
pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
303-
pub ff_effects_max: ::__u32,
304-
}
305-
306300
pub struct uinput_abs_setup {
307301
pub code: ::__u16,
308302
pub absinfo: input_absinfo,
309303
}
310304

311-
pub struct uinput_user_dev {
312-
pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
313-
pub id: input_id,
314-
pub ff_effects_max: ::__u32,
315-
pub absmax: [::__s32; ABS_CNT],
316-
pub absmin: [::__s32; ABS_CNT],
317-
pub absfuzz: [::__s32; ABS_CNT],
318-
pub absflat: [::__s32; ABS_CNT],
319-
}
320-
321305
pub struct dl_phdr_info {
322306
#[cfg(target_pointer_width = "64")]
323307
pub dlpi_addr: Elf64_Addr,
@@ -591,6 +575,22 @@ s_no_extra_traits! {
591575
pub salg_name: [::c_uchar; 64],
592576
}
593577

578+
pub struct uinput_setup {
579+
pub id: input_id,
580+
pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
581+
pub ff_effects_max: ::__u32,
582+
}
583+
584+
pub struct uinput_user_dev {
585+
pub name: [::c_char; UINPUT_MAX_NAME_SIZE],
586+
pub id: input_id,
587+
pub ff_effects_max: ::__u32,
588+
pub absmax: [::__s32; ABS_CNT],
589+
pub absmin: [::__s32; ABS_CNT],
590+
pub absfuzz: [::__s32; ABS_CNT],
591+
pub absflat: [::__s32; ABS_CNT],
592+
}
593+
594594
/// WARNING: The `PartialEq`, `Eq` and `Hash` implementations of this
595595
/// type are unsound and will be removed in the future.
596596
#[deprecated(
@@ -861,6 +861,72 @@ cfg_if! {
861861
}
862862
}
863863

864+
impl PartialEq for uinput_setup {
865+
fn eq(&self, other: &uinput_setup) -> bool {
866+
self.id == other.id
867+
&& self.name[..] == other.name[..]
868+
&& self.ff_effects_max == other.ff_effects_max
869+
}
870+
}
871+
impl Eq for uinput_setup {}
872+
873+
impl ::fmt::Debug for uinput_setup {
874+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
875+
f.debug_struct("uinput_setup")
876+
.field("id", &self.id)
877+
.field("name", &&self.name[..])
878+
.field("ff_effects_max", &self.ff_effects_max)
879+
.finish()
880+
}
881+
}
882+
883+
impl ::hash::Hash for uinput_setup {
884+
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
885+
self.id.hash(state);
886+
self.name.hash(state);
887+
self.ff_effects_max.hash(state);
888+
}
889+
}
890+
891+
impl PartialEq for uinput_user_dev {
892+
fn eq(&self, other: &uinput_user_dev) -> bool {
893+
self.name[..] == other.name[..]
894+
&& self.id == other.id
895+
&& self.ff_effects_max == other.ff_effects_max
896+
&& self.absmax[..] == other.absmax[..]
897+
&& self.absmin[..] == other.absmin[..]
898+
&& self.absfuzz[..] == other.absfuzz[..]
899+
&& self.absflat[..] == other.absflat[..]
900+
}
901+
}
902+
impl Eq for uinput_user_dev {}
903+
904+
impl ::fmt::Debug for uinput_user_dev {
905+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
906+
f.debug_struct("uinput_setup")
907+
.field("name", &&self.name[..])
908+
.field("id", &self.id)
909+
.field("ff_effects_max", &self.ff_effects_max)
910+
.field("absmax", &&self.absmax[..])
911+
.field("absmin", &&self.absmin[..])
912+
.field("absfuzz", &&self.absfuzz[..])
913+
.field("absflat", &&self.absflat[..])
914+
.finish()
915+
}
916+
}
917+
918+
impl ::hash::Hash for uinput_user_dev {
919+
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
920+
self.name.hash(state);
921+
self.id.hash(state);
922+
self.ff_effects_max.hash(state);
923+
self.absmax.hash(state);
924+
self.absmin.hash(state);
925+
self.absfuzz.hash(state);
926+
self.absflat.hash(state);
927+
}
928+
}
929+
864930
#[allow(deprecated)]
865931
impl af_alg_iv {
866932
fn as_slice(&self) -> &[u8] {

0 commit comments

Comments
 (0)