mod test;
use core::cell::{Cell, UnsafeCell};
use core::cmp::Reverse;
use core::marker::{PhantomData, PhantomPinned};
use core::mem::{ManuallyDrop, MaybeUninit};
use core::num::{NonZero, Saturating, Wrapping};
use core::ptr::NonNull;
use oct::{
Immutable,
Init,
Outlay,
Zeroable,
transmute_mut,
transmute_mut_with_metadata,
transmute_ref,
transmute_ref_with_metadata,
};
#[cfg(feature = "bstr")]
use core::bstr::ByteStr;
#[cfg(feature = "simd")]
use core::simd::{Simd, SimdElement};
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
use core::arch::aarch64 as arch;
#[cfg(target_arch = "wasm32")]
use core::arch::wasm32 as arch;
#[cfg(target_arch = "x86")]
use core::arch::x86 as arch;
#[cfg(target_arch = "x86_64")]
use core::arch::x86_64 as arch;
#[cfg(all(target_has_atomic = "128", feature = "atomic_u128_i128"))]
use core::sync::atomic::{AtomicI128, AtomicU128};
#[cfg(target_has_atomic = "16")]
use core::sync::atomic::{AtomicI16, AtomicU16};
#[cfg(target_has_atomic = "32")]
use core::sync::atomic::{AtomicI32, AtomicU32};
#[cfg(target_has_atomic = "64")]
use core::sync::atomic::{AtomicI64, AtomicU64};
#[cfg(target_has_atomic = "8")]
use core::sync::atomic::{AtomicI8, AtomicU8};
#[cfg(target_has_atomic = "ptr")]
use core::sync::atomic::{AtomicIsize, AtomicUsize};
#[doc(alias = "FromBytes")]
pub unsafe trait FromOctets: Zeroable {
#[inline]
#[must_use]
#[track_caller]
fn read_from_octets(octets: &[u8]) -> Self
where
Self: Sized,
{
assert!(
octets.len() >= size_of::<Self>(),
"cannot read object from undersized octets",
);
let p = octets.as_ptr().cast::<Self>();
assert!(
p.is_aligned(),
"cannot read object from unaligned octets",
);
unsafe { p.read() }
}
#[inline]
#[must_use]
#[track_caller]
fn read_from_octets_unaligned(octets: &[u8]) -> Self
where
Self: Sized,
{
assert!(
octets.len() >= size_of::<Self>(),
"cannot read object from undersized octets",
);
let p = octets.as_ptr().cast::<Self>();
unsafe { p.read_unaligned() }
}
#[inline]
#[must_use]
#[track_caller]
fn ref_from_octets(octets: &[u8]) -> &Self
where
Self: Outlay + Immutable,
{
transmute_ref::<[u8], Self>(octets)
}
#[inline]
#[must_use]
#[track_caller]
fn mut_from_octets(octets: &mut [u8]) -> &mut Self
where
Self: Outlay + Init,
{
transmute_mut::<[u8], Self>(octets)
}
#[inline]
#[must_use]
#[track_caller]
fn ref_from_octets_with_metadata(octets: &[u8], metadata: Self::Metadata) -> &Self
where
Self: Outlay + Immutable,
{
transmute_ref_with_metadata::<[u8], Self>(octets, metadata)
}
#[inline]
#[must_use]
#[track_caller]
fn mut_from_octets_with_metadata(octets: &mut [u8], metadata: Self::Metadata) -> &mut Self
where
Self: Outlay + Init,
{
transmute_mut_with_metadata::<[u8], Self>(octets, metadata)
}
#[inline]
#[must_use]
fn new_oned() -> Self
where
Self: Sized,
{
let mut this = MaybeUninit::<Self>::uninit();
this.make_oned();
unsafe { this.assume_init() }
}
#[inline]
fn make_oned(&mut self) {
let len = size_of_val(self);
let ptr = (&raw mut *self).cast::<u8>();
unsafe { ptr.write_bytes(0b11111111, len) };
}
}
unsafe impl<T: FromOctets, const N: usize> FromOctets for [T; N] {}
#[cfg(all(target_has_atomic = "128", feature = "atomic_u128_i128"))]
unsafe impl FromOctets for AtomicI128 {}
#[cfg(target_has_atomic = "16")]
unsafe impl FromOctets for AtomicI16 {}
#[cfg(target_has_atomic = "32")]
unsafe impl FromOctets for AtomicI32 {}
#[cfg(target_has_atomic = "64")]
unsafe impl FromOctets for AtomicI64 {}
#[cfg(target_has_atomic = "8")]
unsafe impl FromOctets for AtomicI8 {}
#[cfg(target_has_atomic = "ptr")]
unsafe impl FromOctets for AtomicIsize {}
#[cfg(all(target_has_atomic = "128", feature = "atomic_u128_i128"))]
unsafe impl FromOctets for AtomicU128 {}
#[cfg(target_has_atomic = "16")]
unsafe impl FromOctets for AtomicU16 {}
#[cfg(target_has_atomic = "32")]
unsafe impl FromOctets for AtomicU32 {}
#[cfg(target_has_atomic = "64")]
unsafe impl FromOctets for AtomicU64 {}
#[cfg(target_has_atomic = "8")]
unsafe impl FromOctets for AtomicU8 {}
#[cfg(target_has_atomic = "ptr")]
unsafe impl FromOctets for AtomicUsize {}
#[cfg(feature = "bstr")]
unsafe impl FromOctets for ByteStr {}
unsafe impl<T: FromOctets> FromOctets for Cell<T> {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::CpuidResult {}
#[cfg(feature = "f128")]
unsafe impl FromOctets for f128 {}
#[cfg(feature = "f16")]
unsafe impl FromOctets for f16 {}
unsafe impl FromOctets for f32 {}
unsafe impl FromOctets for f64 {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x4_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x4x2_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x4x3_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x4x4_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x8_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x8x2_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x8x3_t {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::float16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::float32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec"))]
unsafe impl FromOctets for arch::float64x2x4_t {}
unsafe impl FromOctets for i128 {}
unsafe impl FromOctets for i16 {}
unsafe impl FromOctets for i32 {}
unsafe impl FromOctets for i64 {}
unsafe impl FromOctets for i8 {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int64x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::int8x8x4_t {}
unsafe impl FromOctets for isize {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m128 {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.89)]
unsafe impl FromOctets for arch::__m128bh {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m128d {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::__m128h {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m128i {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m256 {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.89)]
unsafe impl FromOctets for arch::__m256bh {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m256d {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::__m256h {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m256i {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m512 {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.89)]
unsafe impl FromOctets for arch::__m512bh {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m512d {}
#[expect(clippy::incompatible_msrv)]
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
#[rustversion::since(1.94)]
unsafe impl FromOctets for arch::__m512h {}
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
unsafe impl FromOctets for arch::__m512i {}
unsafe impl<T: FromOctets> FromOctets for ManuallyDrop<T> {}
unsafe impl<T> FromOctets for MaybeUninit<T> {}
unsafe impl<T> FromOctets for Option<NonNull<T>> {}
unsafe impl FromOctets for Option<NonZero<i128>> {}
unsafe impl FromOctets for Option<NonZero<i16>> {}
unsafe impl FromOctets for Option<NonZero<i32>> {}
unsafe impl FromOctets for Option<NonZero<i64>> {}
unsafe impl FromOctets for Option<NonZero<i8>> {}
unsafe impl FromOctets for Option<NonZero<isize>> {}
unsafe impl FromOctets for Option<NonZero<u128>> {}
unsafe impl FromOctets for Option<NonZero<u16>> {}
unsafe impl FromOctets for Option<NonZero<u32>> {}
unsafe impl FromOctets for Option<NonZero<u64>> {}
unsafe impl FromOctets for Option<NonZero<u8>> {}
unsafe impl FromOctets for Option<NonZero<usize>> {}
unsafe impl<T: ?Sized> FromOctets for PhantomData<T> {}
unsafe impl FromOctets for PhantomPinned {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly64x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::poly8x8x4_t {}
unsafe impl<T: FromOctets> FromOctets for Reverse<T> {}
unsafe impl<T: FromOctets> FromOctets for Saturating<T> {}
#[cfg(feature = "simd")]
unsafe impl<T: SimdElement + FromOctets, const N: usize> FromOctets for Simd<T, N> {}
unsafe impl<T: FromOctets> FromOctets for [T] {}
unsafe impl FromOctets for str {}
#[cfg_attr(feature = "unstable_docs", doc(fake_variadic))]
unsafe impl<T: FromOctets> FromOctets for (T,) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T, T, T, T, T) {}
#[doc(hidden)]
unsafe impl<T: FromOctets> FromOctets for (T, T, T, T, T, T, T, T, T, T, T, T) {}
unsafe impl FromOctets for u128 {}
unsafe impl FromOctets for u16 {}
unsafe impl FromOctets for u32 {}
unsafe impl FromOctets for u64 {}
unsafe impl FromOctets for u8 {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint16x8x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x4x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x4x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint32x4x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x1_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x1x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x1x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x1x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x2x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x2x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint64x2x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x16_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x16x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x16x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x16x4_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x8_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x8x2_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x8x3_t {}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_feature = "v7"))]
unsafe impl FromOctets for arch::uint8x8x4_t {}
unsafe impl FromOctets for () {}
unsafe impl<T: FromOctets> FromOctets for UnsafeCell<T> {}
unsafe impl FromOctets for usize {}
#[cfg(target_arch = "wasm32")]
unsafe impl FromOctets for arch::v128 {}
unsafe impl<T: FromOctets> FromOctets for Wrapping<T> {}