Function core::intrinsics::raw_eq[][src]

pub unsafe extern "rust-intrinsic" fn raw_eq<T>(a: &T, b: &T) -> bool
🔬 This is a nightly-only experimental API. (core_intrinsics)

intrinsics are unlikely to ever be stabilized, instead they should be used through stabilized interfaces in the rest of the standard library

Expand description

Determines whether the raw bytes of the two values are equal.

The is particularly handy for arrays, since it allows things like just comparing i96s instead of forcing allocas for [6 x i16].

Above some backend-decided threshold this will emit calls to memcmp, like slice equality does, instead of causing massive code size.

Safety

It’s UB to call this if any of the bytes in *a or *b are uninitialized. Note that this is a stricter criterion than just the values being fully-initialized: if T has padding, it’s UB to call this intrinsic.

(The implementation is allowed to branch on the results of comparisons, which is UB if any of their inputs are undef.)