pub(crate) unsafe fn new_unchecked(
		addr: Address<M, T>,
		head: BitIdx<T::Mem>,
		bits: usize,
	) -> Self {
		let addr = addr.to_const().cast::<u8>();

		let head = head.into_inner() as usize;
		let ptr_data = addr as usize & Self::PTR_ADDR_MASK;
		let ptr_head = head >> Self::LEN_HEAD_BITS;

		let len_head = head & Self::LEN_HEAD_MASK;
		let len_bits = bits << Self::LEN_HEAD_BITS;

		/* See <https://github.com/bitvecto-rs/bitvec/issues/135#issuecomment-986357842>.
		 * This attempts to retain inbound provenance information and may help
		 * Miri better understand pointer operations this module performs.
		 *
		 * This performs `a + (p - a)` in `addr`’s provenance zone, which is
		 * numerically equivalent to `p` but does not require conjuring a new,
		 * uninformed, pointer value.
		 */
		let ptr_raw = ptr_data | ptr_head;
		let ptr = addr.wrapping_add(ptr_raw.wrapping_sub(addr as usize));

		Self {
			ptr: NonNull::new_unchecked(ptr.cast::<()>() as *mut ()),
			len: len_bits | len_head,
			..Self::EMPTY
		}
	}
/// Creates a new bit-span from its components, without any validity checks.
///
/// ## Safety
///
/// The caller must ensure that the arguments satisfy all the requirements
/// outlined in [`::new()`]. The easiest way to ensure this is to only use
/// this function to construct bit-spans from values extracted from
/// bit-spans previously constructed through `::new()`.
///
/// This function **only** performs the value encoding. Invalid lengths will
/// truncate, and invalid addresses may cause memory unsafety.
///
/// [`::new()`]: Self::new
Creates a new bit-span from its components, without any validity checks.
Creates a new bit - span from its components without any validity checks .
pub(crate) unsafe fn new_unchecked(
		addr: Address<M, T>,
		head: BitIdx<T::Mem>,
		bits: usize,
	) -> Self {
		let addr = addr.to_const().cast::<u8>();
		let head = head.into_inner() as usize;
		let ptr_data = addr as usize & Self::PTR_ADDR_MASK;
		let ptr_head = head >> Self::LEN_HEAD_BITS;
		let len_head = head & Self::LEN_HEAD_MASK;
		let len_bits = bits << Self::LEN_HEAD_BITS;
		/* See <https://github.com/bitvecto-rs/bitvec/issues/135#issuecomment-986357842>.
		 * This attempts to retain inbound provenance information and may help
		 * Miri better understand pointer operations this module performs.
		 *
		 * This performs `a + (p - a)` in `addr`’s provenance zone, which is
		 * numerically equivalent to `p` but does not require conjuring a new,
		 * uninformed, pointer value.
		 */
		let ptr_raw = ptr_data | ptr_head;
		let ptr = addr.wrapping_add(ptr_raw.wrapping_sub(addr as usize));
		Self {
			ptr: NonNull::new_unchecked(ptr.cast::<()>() as *mut ()),
			len: len_bits | len_head,
			..Self::EMPTY
		}
	}
pub ( crate ) unsafe fn new_unchecked ( addr : Address < M , T > , head : BitIdx < T :: Mem > , bits : usize , ) -> Self { let addr = addr . to_const ( ) . cast :: < u8 > ( ) ; let head = head . into_inner ( ) as usize ; let ptr_data = addr as usize & Self :: PTR_ADDR_MASK ; let ptr_head = head >> Self :: LEN_HEAD_BITS ; let len_head = head & Self :: LEN_HEAD_MASK ; let len_bits = bits << Self :: LEN_HEAD_BITS ; /* See <https://github.com/bitvecto-rs/bitvec/issues/135#issuecomment-986357842>.
		 * This attempts to retain inbound provenance information and may help
		 * Miri better understand pointer operations this module performs.
		 *
		 * This performs `a + (p - a)` in `addr`’s provenance zone, which is
		 * numerically equivalent to `p` but does not require conjuring a new,
		 * uninformed, pointer value.
		 */ let ptr_raw = ptr_data | ptr_head ; let ptr = addr . wrapping_add ( ptr_raw . wrapping_sub ( addr as usize ) ) ; Self { ptr : NonNull :: new_unchecked ( ptr . cast :: < ( ) > ( ) as * mut ( ) ) , len : len_bits | len_head , .. Self :: EMPTY } }
Creates a new bit-span from its components, without any validity checks.
Creates a new bit - span from its components without any validity checks .
addr
Address<M, T>
head
BitIdx<T::Mem>
bits
usize
addr
Address<M, T>
head
BitIdx<T::Mem>
bits
usize
safety
The caller must ensure that the arguments satisfy all the requirements
outlined in [`::new()`]. The easiest way to ensure this is to only use
this function to construct bit-spans from values extracted from
bit-spans previously constructed through `::new()`.

This function **only** performs the value encoding. Invalid lengths will
truncate, and invalid addresses may cause memory unsafety.


The caller must ensure that the arguments satisfy all the requirements outlined in [ ` :: new () ` ] . The easiest way to ensure this is to only use this function to construct bit - spans from values extracted from bit - spans previously constructed through ` :: new () ` . This function ** only ** performs the value encoding . Invalid lengths will truncate and invalid addresses may cause memory unsafety .