pub fn new() -> Weak<T> {
        Weak { ptr: NonNull::new(usize::MAX as *mut RcBox<T>).expect("MAX is not 0") }
    }
Consumes the `Weak<T>` and turns it into a raw pointer.

This converts the weak pointer into a raw pointer, while still preserving the ownership of
one weak reference (the weak count is not modified by this operation). It can be turned
back into the `Weak<T>` with [`from_raw`].

The same restrictions of accessing the target of the pointer as with
[`as_ptr`] apply.

# Examples

```
use std::rc::{Rc, Weak};

let strong = Rc::new("hello".to_owned());
let weak = Rc::downgrade(&strong);
let raw = weak.into_raw();

assert_eq!(
benchmarks/haystacks/code/rust-library.rs