]> git.lizzy.rs Git - rust.git/commitdiff
Implement DerefMut for String
authorSimon Sapin <simon.sapin@exyr.org>
Fri, 12 Jun 2015 08:29:23 +0000 (10:29 +0200)
committerSimon Sapin <simon.sapin@exyr.org>
Mon, 13 Jul 2015 14:21:43 +0000 (16:21 +0200)
`&mut str` is rarely useful, but it is for e.g.
`AsciiExt::make_ascii_lowercase`.

src/libcollections/string.rs

index ef1d9b08b4a9a6d4b5b5328c5529f9c71bd4db62..491b7a6dd919bb53937ddb2086baae15cdec6722 100644 (file)
@@ -989,6 +989,14 @@ fn deref(&self) -> &str {
     }
 }
 
+#[stable(feature = "derefmut_for_string", since = "1.2.0")]
+impl ops::DerefMut for String {
+    #[inline]
+    fn deref_mut(&mut self) -> &mut str {
+        unsafe { mem::transmute(&mut self.vec[..]) }
+    }
+}
+
 /// Wrapper type providing a `&String` reference via `Deref`.
 #[unstable(feature = "collections")]
 #[deprecated(since = "1.2.0",