Skip to content

Commit

Permalink
Remove mem::transmute used in Box<str> conversions
Browse files Browse the repository at this point in the history
  • Loading branch information
nvzqz committed Sep 27, 2017
1 parent 930d3b1 commit 36d663f
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 8 deletions.
4 changes: 1 addition & 3 deletions src/liballoc/boxed.rs
Expand Up @@ -528,9 +528,7 @@ impl<'a> From<&'a str> for Box<str> {
#[stable(feature = "boxed_str_conv", since = "1.19.0")]
impl From<Box<str>> for Box<[u8]> {
fn from(s: Box<str>) -> Self {
unsafe {
mem::transmute(s)
}
unsafe { Box::from_raw(Box::into_raw(s) as *mut [u8]) }
}
}

Expand Down
8 changes: 3 additions & 5 deletions src/liballoc/str.rs
Expand Up @@ -2047,10 +2047,8 @@ impl str {
/// ```
#[stable(feature = "box_str", since = "1.4.0")]
pub fn into_string(self: Box<str>) -> String {
unsafe {
let slice = mem::transmute::<Box<str>, Box<[u8]>>(self);
String::from_utf8_unchecked(slice.into_vec())
}
let slice = Box::<[u8]>::from(self);
unsafe { String::from_utf8_unchecked(slice.into_vec()) }
}

/// Create a [`String`] by repeating a string `n` times.
Expand Down Expand Up @@ -2087,5 +2085,5 @@ impl str {
/// ```
#[stable(feature = "str_box_extras", since = "1.20.0")]
pub unsafe fn from_boxed_utf8_unchecked(v: Box<[u8]>) -> Box<str> {
mem::transmute(v)
Box::from_raw(Box::into_raw(v) as *mut str)
}

0 comments on commit 36d663f

Please sign in to comment.