Trait Unaligned

Source
pub unsafe trait Unaligned { }
Expand description

Types with no alignment requirement.

If T: Unaligned, then align_of::<T>() == 1.

§Implementation

Do not implement this trait yourself! Instead, use #[derive(Unaligned)]; e.g.:

#[derive(Unaligned)]
#[repr(C)]
struct MyStruct {
    ...
}

#[derive(Unaligned)]
#[repr(u8)]
enum MyEnum {
    ...
}

#[derive(Unaligned)]
#[repr(packed)]
union MyUnion {
    ...
}

This derive performs a sophisticated, compile-time safety analysis to determine whether a type is Unaligned.

§Safety

This section describes what is required in order for T: Unaligned, and what unsafe code may assume of such types. If you don’t plan on implementing Unaligned manually, and you don’t plan on writing unsafe code that operates on Unaligned types, then you don’t need to read this section.

If T: Unaligned, then unsafe code may assume that it is sound to produce a reference to T at any memory location regardless of alignment. If a type is marked as Unaligned which violates this contract, it may cause undefined behavior.

#[derive(Unaligned)] only permits types which satisfy these requirements.

Implementations on Foreign Types§

Source§

impl Unaligned for Option<NonZeroI8>

Source§

impl Unaligned for Option<NonZeroU8>

Source§

impl Unaligned for bool

Source§

impl Unaligned for i8

Source§

impl Unaligned for str

Source§

impl Unaligned for u8

Source§

impl Unaligned for ()

Source§

impl Unaligned for AtomicBool

Source§

impl Unaligned for AtomicI8

Source§

impl Unaligned for AtomicU8

Source§

impl Unaligned for NonZeroI8

Source§

impl Unaligned for NonZeroU8

Source§

impl<T: Unaligned> Unaligned for [T]

Source§

impl<T: Unaligned> Unaligned for Wrapping<T>

Source§

impl<T: Unaligned> Unaligned for CoreMaybeUninit<T>

Source§

impl<T: Unaligned, const N: usize> Unaligned for [T; N]

Source§

impl<T: ?Sized + Unaligned> Unaligned for Cell<T>

Source§

impl<T: ?Sized + Unaligned> Unaligned for UnsafeCell<T>

Source§

impl<T: ?Sized + Unaligned> Unaligned for ManuallyDrop<T>

Source§

impl<T: ?Sized> Unaligned for PhantomData<T>

Implementors§

Source§

impl<O> Unaligned for F32<O>

Source§

impl<O> Unaligned for F64<O>

Source§

impl<O> Unaligned for I16<O>

Source§

impl<O> Unaligned for I32<O>

Source§

impl<O> Unaligned for I64<O>

Source§

impl<O> Unaligned for I128<O>

Source§

impl<O> Unaligned for Isize<O>

Source§

impl<O> Unaligned for U16<O>

Source§

impl<O> Unaligned for U32<O>

Source§

impl<O> Unaligned for U64<O>

Source§

impl<O> Unaligned for U128<O>

Source§

impl<O> Unaligned for Usize<O>

Source§

impl<T> Unaligned for Unalign<T>

impl Unaligned for EapolFields

impl Unaligned for KeyDescriptor
where u8: Unaligned,

impl Unaligned for KeyFrameFields

impl Unaligned for ProtocolVersion
where u8: Unaligned,

impl Unaligned for BlockGroupDesc32
where U32: Unaligned, U16: Unaligned,

impl Unaligned for DirEntryHeader
where U32: Unaligned, U16: Unaligned, u8: Unaligned,

impl Unaligned for Extent
where U32: Unaligned, U16: Unaligned,

impl Unaligned for ExtentHeader
where U16: Unaligned, U32: Unaligned,

impl Unaligned for ExtentIndex
where U32: Unaligned, U16: Unaligned,

impl Unaligned for INode
where U16: Unaligned, U32: Unaligned, [u8; 4]: Unaligned, [u8; 60]: Unaligned,

impl Unaligned for SuperBlock
where U32: Unaligned, U16: Unaligned, [u8; 16]: Unaligned, [u8; 64]: Unaligned, u8: Unaligned, [U32; 4]: Unaligned, [U32; 17]: Unaligned, U64: Unaligned, [u8; 32]: Unaligned, [U32; 2]: Unaligned, [u8; 4]: Unaligned, [U32; 98]: Unaligned,

impl Unaligned for XattrEntryHeader
where u8: Unaligned, U16: Unaligned, U32: Unaligned,

impl Unaligned for XattrHeader
where U32: Unaligned, [u8; 8]: Unaligned,

impl Unaligned for zbi_bootfs_dirent_t
where U32: Unaligned,

impl Unaligned for zbi_bootfs_header_t
where U32: Unaligned,

impl Unaligned for zbi_header_t
where U32: Unaligned,

impl Unaligned for ProxyFilename

impl Unaligned for Bssid
where [u8; 6]: Unaligned,

impl Unaligned for MacAddr
where [u8; 6]: Unaligned,

impl Unaligned for Header
where U16: Unaligned,

impl Unaligned for Mac
where [u8; 6]: Unaligned,

impl Unaligned for Ipv4Addr
where [u8; 4]: Unaligned,

impl Unaligned for Ipv6Addr
where [u8; 16]: Unaligned,

impl Unaligned for PacketHead
where U32: Unaligned,

impl Unaligned for Mldv1Message
where U16: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for Mldv2QueryMessageHeader
where U16: Unaligned, Ipv6Addr: Unaligned, u8: Unaligned,

impl Unaligned for Mldv2ReportHeader
where [u8; 2]: Unaligned, U16: Unaligned,

impl Unaligned for Mldv2ReportRecordHeader
where u8: Unaligned, U16: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for MulticastListenerDone

impl Unaligned for MulticastListenerQuery

impl Unaligned for MulticastListenerQueryV2

impl Unaligned for MulticastListenerReport

impl Unaligned for MulticastListenerReportV2

impl Unaligned for PrefixInformation
where u8: Unaligned, U32: Unaligned, [u8; 4]: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for NeighborAdvertisement
where u8: Unaligned, [u8; 3]: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for NeighborSolicitation
where [u8; 4]: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for Redirect
where [u8; 4]: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for RouterAdvertisement
where u8: Unaligned, U16: Unaligned, U32: Unaligned,

impl Unaligned for RouterSolicitation
where [u8; 4]: Unaligned,

impl Unaligned for IcmpDestUnreachable
where [u8; 2]: Unaligned, U16: Unaligned,

impl Unaligned for IcmpEchoReply
where IdAndSeq: Unaligned,

impl Unaligned for IcmpEchoRequest
where IdAndSeq: Unaligned,

impl Unaligned for IcmpTimeExceeded
where [u8; 4]: Unaligned,

impl Unaligned for Icmpv4ParameterProblem
where u8: Unaligned, [u8; 3]: Unaligned,

impl Unaligned for Icmpv4Redirect
where Ipv4Addr: Unaligned,

impl Unaligned for Icmpv4TimestampReply
where Timestamp: Unaligned,

impl Unaligned for Icmpv4TimestampRequest
where Timestamp: Unaligned,

impl Unaligned for Icmpv6PacketTooBig
where U32: Unaligned,

impl Unaligned for Icmpv6ParameterProblem
where U32: Unaligned,

impl Unaligned for GroupRecordHeader
where u8: Unaligned, U16: Unaligned, Ipv4Addr: Unaligned,

impl Unaligned for MembershipQueryData
where Ipv4Addr: Unaligned, u8: Unaligned, U16: Unaligned,

impl Unaligned for MembershipReportV3Data
where [u8; 2]: Unaligned, U16: Unaligned,

impl Unaligned for HeaderPrefix
where u8: Unaligned, [u8; 2]: Unaligned,

impl Unaligned for DscpAndEcn
where u8: Unaligned,

impl Unaligned for HeaderPrefix
where u8: Unaligned, DscpAndEcn: Unaligned, U16: Unaligned, [u8; 2]: Unaligned, Ipv4Addr: Unaligned,

impl Unaligned for FixedHeader
where [u8; 4]: Unaligned, U16: Unaligned, u8: Unaligned, Ipv6Addr: Unaligned,

impl Unaligned for TcpSackBlock
where U32: Unaligned,

impl Unaligned for TcpFlowAndSeqNum
where TcpFlowHeader: Unaligned, U32: Unaligned,

impl Unaligned for TcpFlowHeader
where U16: Unaligned,

impl Unaligned for EUI48
where [u8; 6]: Unaligned,

impl Unaligned for EUI64
where [u8; 8]: Unaligned,

impl Unaligned for PacketType

impl Unaligned for Header

impl Unaligned for BigEndianU128
where [u8; 16]: Unaligned,

impl Unaligned for BigEndianU16
where [u8; 2]: Unaligned,

impl Unaligned for BigEndianU32
where [u8; 4]: Unaligned,

impl Unaligned for BigEndianU64
where [u8; 8]: Unaligned,

impl Unaligned for ApWmmInfo
where u8: Unaligned,

impl Unaligned for BitmapControl
where u8: Unaligned,

impl Unaligned for BssMaxIdlePeriod

impl Unaligned for ClientWmmInfo
where u8: Unaligned,

impl Unaligned for DsssParamSet
where u8: Unaligned,

impl Unaligned for EcwMinMax
where u8: Unaligned,

impl Unaligned for ExtCapabilitiesOctet1
where u8: Unaligned,

impl Unaligned for ExtCapabilitiesOctet2
where u8: Unaligned,

impl Unaligned for ExtCapabilitiesOctet3
where u8: Unaligned,

impl Unaligned for Header

impl Unaligned for HtCapabilities

impl Unaligned for HtOperation

impl Unaligned for Id

impl Unaligned for PerrDestinationFlags
where u8: Unaligned,

impl Unaligned for PerrDestinationHeader

impl Unaligned for PerrHeader

impl Unaligned for PrepFlags
where u8: Unaligned,

impl Unaligned for PrepHeader

impl Unaligned for PrepTail

impl Unaligned for PreqFlags
where u8: Unaligned,

impl Unaligned for PreqHeader

impl Unaligned for PreqMiddle

impl Unaligned for PreqPerTarget

impl Unaligned for PreqPerTargetFlags
where u8: Unaligned,

impl Unaligned for SecChanOffset

impl Unaligned for SupportedRate
where u8: Unaligned,

impl Unaligned for TimHeader

impl Unaligned for TransmitPower
where u8: Unaligned,

impl Unaligned for TransmitPowerInfo
where u8: Unaligned,

impl Unaligned for VhtCapabilities

impl Unaligned for VhtOperation

impl Unaligned for WmmAcParams

impl Unaligned for WmmAciAifsn
where u8: Unaligned,

impl Unaligned for WmmInfo
where u8: Unaligned,

impl Unaligned for WmmParam

impl Unaligned for AttributeHeader

impl Unaligned for Id

impl Unaligned for WpsState

impl Unaligned for ActionHdr

impl Unaligned for AddbaReqHdr

impl Unaligned for AddbaRespHdr

impl Unaligned for AmsduSubframeHdr

impl Unaligned for AssocReqHdr

impl Unaligned for AssocRespHdr

impl Unaligned for AuthHdr

impl Unaligned for BeaconHdr

impl Unaligned for DeauthHdr

impl Unaligned for DelbaHdr

impl Unaligned for DisassocHdr

impl Unaligned for EthernetIIHdr

impl Unaligned for FixedDataHdrFields

impl Unaligned for LlcHdr

impl Unaligned for MgmtHdr

impl Unaligned for ProbeRespHdr

impl Unaligned for PsPoll

impl Unaligned for Oui