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
Unresolved Questions
Feature gate:
#![feature(clone_to_uninit)]This is a tracking issue for
CloneToUninitand its impls. This trait backs the behavior ofRc::make_mutandArc::make_mut, and likely in the future alsoBox::clone.Public API
Steps / History
{Rc,Arc}::make_mut()to unsized types. #116113Box::cloneto be based onCloneToUninitUnresolved Questions
*mut ()in the signature instead of*mut Self. This makes CloneToUninit dyn-safe. Generalize{Rc,Arc}::make_mut()to unsized types. #116113 (comment)Footnotes
https://std-dev-guide.rust-lang.org/feature-lifecycle/stabilization.html ↩