@@ -1849,6 +1849,35 @@ impl String {
1849
1849
let slice = self . vec . into_boxed_slice ( ) ;
1850
1850
unsafe { from_boxed_utf8_unchecked ( slice) }
1851
1851
}
1852
+
1853
+ /// Consumes and leaks the `String`, returning a mutable reference to the contents,
1854
+ /// `&'a mut str`.
1855
+ ///
1856
+ /// This is mainly useful for data that lives for the remainder of
1857
+ /// the program's life. Dropping the returned reference will cause a memory
1858
+ /// leak.
1859
+ ///
1860
+ /// It does not reallocate or shrink the `String`,
1861
+ /// so the leaked allocation may include unused capacity that is not part
1862
+ /// of the returned slice.
1863
+ ///
1864
+ /// # Examples
1865
+ ///
1866
+ /// Simple usage:
1867
+ ///
1868
+ /// ```
1869
+ /// #![feature(string_leak)]
1870
+ ///
1871
+ /// let x = String::from("bucket");
1872
+ /// let static_ref: &'static mut str = x.leak();
1873
+ /// assert_eq!(static_ref, "bucket");
1874
+ /// ```
1875
+ #[ unstable( feature = "string_leak" , issue = "102929" ) ]
1876
+ #[ inline]
1877
+ pub fn leak ( self ) -> & ' static mut str {
1878
+ let slice = self . vec . leak ( ) ;
1879
+ unsafe { from_utf8_unchecked_mut ( slice) }
1880
+ }
1852
1881
}
1853
1882
1854
1883
impl FromUtf8Error {
@@ -2691,35 +2720,6 @@ impl From<String> for Box<str> {
2691
2720
fn from ( s : String ) -> Box < str > {
2692
2721
s. into_boxed_str ( )
2693
2722
}
2694
-
2695
- /// Consumes and leaks the `String`, returning a mutable reference to the contents,
2696
- /// `&'a mut str`.
2697
- ///
2698
- /// This is mainly useful for data that lives for the remainder of
2699
- /// the program's life. Dropping the returned reference will cause a memory
2700
- /// leak.
2701
- ///
2702
- /// It does not reallocate or shrink the `String`,
2703
- /// so the leaked allocation may include unused capacity that is not part
2704
- /// of the returned slice.
2705
- ///
2706
- /// # Examples
2707
- ///
2708
- /// Simple usage:
2709
- ///
2710
- /// ```
2711
- /// #![feature(string_leak)]
2712
- ///
2713
- /// let x = String::from("bucket");
2714
- /// let static_ref: &'static mut str = x.leak();
2715
- /// assert_eq!(static_ref, "bucket");
2716
- /// ```
2717
- #[ unstable( feature = "string_leak" , issue = "102929" ) ]
2718
- #[ inline]
2719
- pub fn leak ( self ) -> & ' static mut str {
2720
- let slice = self . vec . leak ( ) ;
2721
- unsafe { from_utf8_unchecked_mut ( slice) }
2722
- }
2723
2723
}
2724
2724
2725
2725
#[ cfg( not( no_global_oom_handling) ) ]
0 commit comments