Tracking Issue for core::clone::CloneToUninit trait (original) (raw)
Feature gate: #![feature(clone_to_uninit)]
This is a tracking issue for CloneToUninit and its impls. This trait backs the behavior of Rc::make_mut and Arc::make_mut, and likely in the future also Box::clone.
Public API
// core::clone
pub unsafe trait CloneToUninit { unsafe fn clone_to_uninit(&self, dst: *mut Self); }
unsafe impl<T: Clone> CloneToUninit for T; unsafe impl<T: Clone> CloneToUninit for [T];
// TODO: // unsafe impl CloneToUninit for str; // unsafe impl CloneToUninit for CStr; // unsafe impl CloneToUninit for OsStr; // unsafe impl CloneToUninit for Path;
Steps / History
- Implementation: Generalize {Rc,Arc}::make_mut() to unsized types. #116113
- CloneToUninit impls #126877
- Convert
Box::cloneto be based onCloneToUninit - Final comment period (FCP)1
- Stabilization PR
Unresolved Questions
- Consider using
*mut ()in the signature instead of*mut Self. This makes CloneToUninit dyn-safe. Generalize {Rc,Arc}::make_mut() to unsized types. #116113 (comment)