Tracking Issue for clone_from_ref (original) (raw)
Feature gate: #![feature(clone_from_ref)]
This is a tracking issue for Box::clone_from_ref, Arc::clone_from_ref, and Rc::clone_from_ref. try_* and *_in functions are under this tracking issue as well as allocator_api.
Allows creating a Box<T>/Rc<T>/Arc<T> by cloning from a &T where T: CloneToUninit. Notably, these work even when T is unsized (e.g. a slice).
Public API
// alloc::boxed
impl<T: ?Sized + CloneToUninit> Box { pub fn clone_from_ref(val: &T) -> Box;
// also under feature(allocator_api) pub fn try_clone_from_ref(val: &T) -> Result<Box, AllocError>; }
impl<T: ?Sized + CloneToUninit, A: Allocator> Box<T, A> { // also under feature(allocator_api) pub fn clone_from_ref_in(val: &T, alloc: A) -> Box<T, A>; // also under feature(allocator_api) pub fn try_clone_from_ref_in(val: &T, alloc: A) -> Result<Box<T, A>, AllocError>; }
// alloc::rc
impl<T: ?Sized + CloneToUninit> Rc { pub fn clone_from_ref(val: &T) -> Rc;
// also under feature(allocator_api) pub fn try_clone_from_ref(val: &T) -> Result<Rc, AllocError>; }
impl<T: ?Sized + CloneToUninit, A: Allocator> Rc<T, A> { // also under feature(allocator_api) pub fn clone_from_ref_in(val: &T, alloc: A) -> Rc<T, A>; // also under feature(allocator_api) pub fn try_clone_from_ref_in(val: &T, alloc: A) -> Result<Rc<T, A>, AllocError>; }
// alloc::sync
impl<T: ?Sized + CloneToUninit> Arc { pub fn clone_from_ref(val: &T) -> Arc;
// also under feature(allocator_api) pub fn try_clone_from_ref(val: &T) -> Result<Arc, AllocError>; }
impl<T: ?Sized + CloneToUninit, A: Allocator> Arc<T, A> { // also under feature(allocator_api) pub fn clone_from_ref_in(val: &T, alloc: A) -> Arc<T, A>; // also under feature(allocator_api) pub fn try_clone_from_ref_in(val: &T, alloc: A) -> Result<Arc<T, A>, AllocError>; }
Steps / History
(Remember to update the S-tracking-* label when checking boxes.)
- ACP: Box::new_from_ref for making a Box from a &T where T: CloneToUninit + ?Sized (and Rc and Arc) libs-team#483
- Implementation: Add Box::clone_from_ref and similar under feature(clone_from_ref) #149079
- Final comment period (FCP)1
- Stabilization PR
Unresolved Questions
- None yet.