pub fn downgrade(this: &Self) -> Weak<T> {
        this.inner().inc_weak();
        // Make sure we do not create a dangling Weak
        debug_assert!(!is_dangling(this.ptr.as_ptr()));
        Weak { ptr: this.ptr }
    }
Decrements the strong reference count on the `Rc<T>` associated with the
provided pointer by one.

# Safety

The pointer must have been obtained through `Rc::into_raw`, and the
associated `Rc` instance must be valid (i.e. the strong count must be at
least 1) when invoking this method. This method can be used to release
the final `Rc` and backing storage, but **should not** be called after
the final `Rc` has been released.

# Examples

`
benchmarks/haystacks/code/rust-library.rs