#non-null #mut #no-std #pointers #invariants

no-std nonnull-mut

NonNull<T>, but T is invariant like *mut T

3 releases

0.1.2 Aug 28, 2025
0.1.1 Jun 6, 2025
0.1.0 Jun 6, 2025

#2891 in Rust patterns

Download history

227 downloads per month

MIT license

16KB
337 lines

NonNull<T>, but T is invariant like *mut T

Like NonNull<T>, but T is invariant like *mut T

Examples

# use std::mem::{size_of, align_of};
use nonnull_mut::NonNullMut;

assert_eq!(size_of::<NonNullMut<i16>>(), size_of::<Option<NonNullMut<i16>>>());
assert_eq!(align_of::<NonNullMut<i16>>(), align_of::<Option<NonNullMut<i16>>>());

assert_eq!(size_of::<NonNullMut<str>>(), size_of::<Option<NonNullMut<str>>>());
assert_eq!(align_of::<NonNullMut<str>>(), align_of::<Option<NonNullMut<str>>>());

No runtime deps