use core::mem; | |
use core::ptr::NonNull; | |
use core::str; | |
#[repr(C)] | |
pub struct RustStr { | |
repr: NonNull<str>, | |
} | |
impl RustStr { | |
pub fn from(repr: &str) -> Self { | |
let repr = NonNull::from(repr); | |
RustStr { repr } | |
} | |
pub unsafe fn as_str<'a>(self) -> &'a str { | |
&*self.repr.as_ptr() | |
} | |
} | |
const_assert_eq!(mem::size_of::<Option<RustStr>>(), mem::size_of::<RustStr>()); |