diff options
| author | Jorge Aparicio <japaricious@gmail.com> | 2014-11-17 14:35:27 -0500 |
|---|---|---|
| committer | Jorge Aparicio <japaricious@gmail.com> | 2014-11-17 14:35:27 -0500 |
| commit | d429039e7baae7c3c0f18ef012c861f60c769157 (patch) | |
| tree | 62fc9c5f3a4ae1a23498e8af4d0485711775a030 | |
| parent | 88c743def3cf42ee943ca09dda1e6dccf4894db9 (diff) | |
| download | rust-d429039e7baae7c3c0f18ef012c861f60c769157.tar.gz rust-d429039e7baae7c3c0f18ef012c861f60c769157.zip | |
DSTify `impl Clone for &T`
Closes #19037
| -rw-r--r-- | src/libcore/clone.rs | 16 | ||||
| -rw-r--r-- | src/test/run-pass/issue-19037.rs | 26 |
2 files changed, 29 insertions, 13 deletions
diff --git a/src/libcore/clone.rs b/src/libcore/clone.rs index a495c780e02..d13daf0964a 100644 --- a/src/libcore/clone.rs +++ b/src/libcore/clone.rs @@ -23,6 +23,8 @@ the `clone` method. #![unstable] +use kinds::Sized; + /// A common trait for cloning an object. pub trait Clone { /// Returns a copy of the value. @@ -40,24 +42,12 @@ pub trait Clone { } } -impl<'a, T> Clone for &'a T { +impl<'a, Sized? T> Clone for &'a T { /// Return a shallow copy of the reference. #[inline] fn clone(&self) -> &'a T { *self } } -impl<'a, T> Clone for &'a [T] { - /// Return a shallow copy of the slice. - #[inline] - fn clone(&self) -> &'a [T] { *self } -} - -impl<'a> Clone for &'a str { - /// Return a shallow copy of the slice. - #[inline] - fn clone(&self) -> &'a str { *self } -} - macro_rules! clone_impl( ($t:ty) => { impl Clone for $t { diff --git a/src/test/run-pass/issue-19037.rs b/src/test/run-pass/issue-19037.rs new file mode 100644 index 00000000000..a6b5f4b8744 --- /dev/null +++ b/src/test/run-pass/issue-19037.rs @@ -0,0 +1,26 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +struct Str([u8]); + +#[deriving(Clone)] +struct CharSplits<'a, Sep> { + string: &'a Str, + sep: Sep, + allow_trailing_empty: bool, + only_ascii: bool, + finished: bool, +} + +fn clone(s: &Str) -> &Str { + Clone::clone(&s) +} + +fn main() {} |
