about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJakub Bukaj <jakub@jakub.cc>2014-11-18 00:24:08 +0100
committerJakub Bukaj <jakub@jakub.cc>2014-11-18 00:24:08 +0100
commit2f8da7bbd0cd6cab726a6658d5d7293f428b9dd3 (patch)
tree6a7c6bfbd55b259ea54510aa72dc32d5c0ab19a4 /src
parentda5c61d469f1ace01728d465c940577ce886b28a (diff)
parentd429039e7baae7c3c0f18ef012c861f60c769157 (diff)
downloadrust-2f8da7bbd0cd6cab726a6658d5d7293f428b9dd3.tar.gz
rust-2f8da7bbd0cd6cab726a6658d5d7293f428b9dd3.zip
rollup merge of #19041: japaric/clone
Closes #19037
cc #16918

r? @aturon
Diffstat (limited to 'src')
-rw-r--r--src/libcore/clone.rs16
-rw-r--r--src/test/run-pass/issue-19037.rs26
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() {}