diff --git a/src/cargo/core/interning.rs b/src/cargo/core/interning.rs index d8c18df2d84..10d44a93c6a 100644 --- a/src/cargo/core/interning.rs +++ b/src/cargo/core/interning.rs @@ -3,23 +3,14 @@ use serde::{Serialize, Serializer}; use std::fmt; use std::sync::RwLock; use std::collections::HashSet; -use std::slice; use std::str; -use std::mem; use std::ptr; use std::cmp::Ordering; use std::ops::Deref; use std::hash::{Hash, Hasher}; pub fn leak(s: String) -> &'static str { - let boxed = s.into_boxed_str(); - let ptr = boxed.as_ptr(); - let len = boxed.len(); - mem::forget(boxed); - unsafe { - let slice = slice::from_raw_parts(ptr, len); - str::from_utf8_unchecked(slice) - } + Box::leak(s.into_boxed_str()) } lazy_static! { diff --git a/src/cargo/core/resolver/types.rs b/src/cargo/core/resolver/types.rs index 543c72e7e4a..1190121dae4 100644 --- a/src/cargo/core/resolver/types.rs +++ b/src/cargo/core/resolver/types.rs @@ -206,13 +206,10 @@ impl DepsFrame { .unwrap_or(0) } - pub fn flatten<'s>(&'s self) -> Box + 's> { - // TODO: with impl Trait the Box can be removed - Box::new( - self.remaining_siblings - .clone() - .map(move |(_, (d, _, _))| (self.parent.package_id(), d)), - ) + pub fn flatten<'s>(&'s self) -> impl Iterator + 's { + self.remaining_siblings + .clone() + .map(move |(_, (d, _, _))| (self.parent.package_id(), d)) } }