From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jan 2024 01:21:28 +0400 Subject: Initial vendor packages Signed-off-by: Valentin Popov --- vendor/rustix/src/bitcast.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 vendor/rustix/src/bitcast.rs (limited to 'vendor/rustix/src/bitcast.rs') diff --git a/vendor/rustix/src/bitcast.rs b/vendor/rustix/src/bitcast.rs new file mode 100644 index 0000000..77e0e63 --- /dev/null +++ b/vendor/rustix/src/bitcast.rs @@ -0,0 +1,34 @@ +//! The `bitcast` and `bitflags_bits` macros. + +#![allow(unused_macros)] + +// Ensure that the source and destination types are both primitive integer +// types and the same size, and then bitcast. +macro_rules! bitcast { + ($x:expr) => {{ + if false { + // Ensure the source and destinations are primitive integer types. + let _ = !$x; + let _ = $x as u8; + 0 + } else if false { + // Ensure that the source and destinations are the same size. + // SAFETY: This code is under an `if false`. + #[allow(unsafe_code, unused_unsafe, clippy::useless_transmute)] + unsafe { + ::core::mem::transmute($x) + } + } else { + // Do the conversion. + $x as _ + } + }}; +} + +/// Return a [`bitcast`] of the value of `$x.bits()`, where `$x` is a +/// `bitflags` type. +macro_rules! bitflags_bits { + ($x:expr) => {{ + bitcast!($x.bits()) + }}; +} -- cgit v1.2.3