about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-11-23 02:36:46 +0000
committerbors <bors@rust-lang.org>2014-11-23 02:36:46 +0000
commit529f8bcd8b03f1bcff46c31c682ce9274abff86d (patch)
treefba36a78d9a3e9eaece725ff1c28b7c86a3d618b
parent2274996a1d1092d513ac5df74524b30cb8928961 (diff)
parent07af6f0f43a2f96c0f4fa8afbf1c383539d18030 (diff)
downloadrust-529f8bcd8b03f1bcff46c31c682ce9274abff86d.tar.gz
rust-529f8bcd8b03f1bcff46c31c682ce9274abff86d.zip
auto merge of #19146 : gereeter/rust/reference-borrow, r=aturon
This should be a more general version of #19131.
-rw-r--r--src/libcore/borrow.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/libcore/borrow.rs b/src/libcore/borrow.rs
index f0a14c02382..70b1bc16227 100644
--- a/src/libcore/borrow.rs
+++ b/src/libcore/borrow.rs
@@ -69,8 +69,16 @@ impl<Sized? T> BorrowFromMut<T> for T {
     fn borrow_from_mut(owned: &mut T) -> &mut T { owned }
 }
 
-impl BorrowFrom<&'static str> for str {
-    fn borrow_from<'a>(owned: &'a &'static str) -> &'a str { &**owned }
+impl<'a, Sized? T> BorrowFrom<&'a T> for T {
+    fn borrow_from<'b>(owned: &'b &'a T) -> &'b T { &**owned }
+}
+
+impl<'a, Sized? T> BorrowFrom<&'a mut T> for T {
+    fn borrow_from<'b>(owned: &'b &'a mut T) -> &'b T { &**owned }
+}
+
+impl<'a, Sized? T> BorrowFromMut<&'a mut T> for T {
+    fn borrow_from_mut<'b>(owned: &'b mut &'a mut T) -> &'b mut T { &mut **owned }
 }
 
 /// A generalization of Clone to borrowed data.