pub fn new_zeroed() -> Rc<mem::MaybeUninit<T>> {
        unsafe {
            Rc::from_ptr(Rc::allocate_for_layout(
                Layout::new::<T>(),
                |layout| Global.allocate_zeroed(layout),
                |mem| mem as *mut RcBox<mem::MaybeUninit<T>>,
            ))
        }
    }
Constructs a new `Rc` with uninitialized contents, with the memory
being filled with `0` bytes, returning an error if the allocation fails

See [`MaybeUninit::zeroed`][zeroed] for examples of correct and
incorrect usage of this method.

# Examples

```
#![feature(allocator_api, new_uninit)]

use std::rc::Rc;

let zero = Rc::<u32>::try_new_zeroed()?;
let zero = unsafe { zero.assume_init() };

assert_eq!(*zero, 0);
# Ok::
benchmarks/haystacks/code/rust-library.rs