diff --git a/src/libcore/clone.rs b/src/libcore/clone.rs index 9da970918b0d5..a61e90b6eadf6 100644 --- a/src/libcore/clone.rs +++ b/src/libcore/clone.rs @@ -51,6 +51,12 @@ impl Clone for @mut T { fn clone(&self) -> @mut T { *self } } +impl<'self, T> Clone for &'self T { + /// Return a shallow copy of the borrowed pointer. + #[inline(always)] + fn clone(&self) -> &'self T { *self } +} + macro_rules! clone_impl( ($t:ty) => { impl Clone for $t { @@ -102,3 +108,11 @@ fn test_managed_mut_clone() { *b = 10; assert!(a == b); } + +#[test] +fn test_borrowed_clone() { + let x = 5i; + let y: &int = &x; + let z: &int = (&y).clone(); + assert_eq!(*z, 5); +}