pub unsafe fn assume_init(self) -> Rc<[T]> {
        unsafe { Rc::from_ptr(mem::ManuallyDrop::new(self).ptr.as_ptr() as _) }
    }
Constructs an `Rc<T>` from a raw pointer.

The raw pointer must have been previously returned by a call to
[`Rc<U>::into_raw`][into_raw] where `U` must have the same size
and alignment as `T`. This is trivially true if `U` is `T`.
Note that if `U` is not `T` but has the same size and alignment, this is
basically like transmuting references of different types. See
[`mem::transmute`][transmute] for more information on what
restrictions apply in this case.

The user of `from_raw` has to make sure a specific value of `T` is only
dropped once.

This function is unsafe because improper use may lead to memory unsafety,
even if the returned `Rc<T>` is never accessed.

[into_raw]: Rc::into_raw
[transmute]: core::mem::transmute

# Examples

```
use std::rc::Rc;

let x = Rc::new("hello".to_owned());
let x_ptr = Rc::into_raw(
benchmarks/haystacks/code/rust-library.rs