Function nonnull_from

Source
pub const fn nonnull_from<T: ?Sized>(
    src: impl Reference<Referee = T>,
) -> NonNull<T>
Expand description

Converts &T or &mut T into NonNull<T>.

This function is a const version of the From<&T> and From<&mut T> implementations of NonNull<T>. The returned pointer will have the same mutability as the argument.

This function is useful to avoid accidentally converting a mutable reference to an immutable one when copying around code.

ยงExample

use const_util::mem::nonnull_from;
use core::ptr::NonNull;

let mut x = 1;
assert_eq!(
    nonnull_from(&x),
    NonNull::from(&x),
);
assert_eq!(
    nonnull_from(&mut x),
    NonNull::from(&mut x),
);
unsafe { nonnull_from(&mut x).write(2) };
assert_eq!(unsafe { nonnull_from(&x).read() }, 2);