Ptrplus is a library that adds additional functionality around raw pointers.
Ptrplus provides traits to convert between raw pointers and safer Rust pointer types. AsPtr
, IntoRaw
,
and FromRaw
provide common traits for types that implement as_ptr
, into_raw
, and from_raw
respectively.
Of note, these traits also have implementations for Option
to handle nullable raw pointers.
```rust use ptrplus::AsPtr;
let x: &u32 = &5; let y: const u32 = x.as_ptr(); unsafe { assert_eq!(y, 5); } ```
```rust use ptrplus::AsPtr;
let x = 5; let o1: Option<&u32> = None; let o2: Option<&u32> = Some(&x);
assert!(o1.asptr().isnull()); assert!(!o2.asptr().isnull()); unsafe { asserteq!(*o2.asptr(), 5); } ```
```rust use ptrplus::IntoRaw;
let x: Box
```
```rust use ptrplus::{FromRaw, IntoRaw};
let o1: Option
let p1: *mut u32 = o1.intoraw(); let p2: *mut u32 = o2.intoraw();
assert!(p1.isnull());
assert!(!p2.isnull());
unsafe {
asserteq!(*p2, 5);
let o1: Option