From 96f73c9de3bfc3f502f0892cb13fef1cc7568010 Mon Sep 17 00:00:00 2001 From: mat Date: Sun, 10 Mar 2024 23:06:02 -0500 Subject: [PATCH] fix unsoundness by sealing SwappableNumber --- simdnbt/src/swap_endianness.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/simdnbt/src/swap_endianness.rs b/simdnbt/src/swap_endianness.rs index 59e7986..58df950 100644 --- a/simdnbt/src/swap_endianness.rs +++ b/simdnbt/src/swap_endianness.rs @@ -1,14 +1,19 @@ use std::{mem, simd::prelude::*}; -pub trait SwappableNumber {} -impl SwappableNumber for u16 {} -impl SwappableNumber for u32 {} -impl SwappableNumber for u64 {} -impl SwappableNumber for i16 {} -impl SwappableNumber for i32 {} -impl SwappableNumber for i64 {} -impl SwappableNumber for f32 {} -impl SwappableNumber for f64 {} +mod private { + pub trait Sealed {} + + impl Sealed for u16 {} + impl Sealed for u32 {} + impl Sealed for u64 {} + impl Sealed for i16 {} + impl Sealed for i32 {} + impl Sealed for i64 {} + impl Sealed for f32 {} + impl Sealed for f64 {} +} +pub trait SwappableNumber: private::Sealed {} +impl SwappableNumber for T {} #[inline] fn swap_endianness_16bit(bytes: &mut [u8], num: usize) {