The only non-overridden one remaining is the CStr impl, which cannot
be optimized as doing so would break CString's second invariant.
#[stable(feature = "rust1", since = "1.0.0")]
impl ToOwned for OsStr {
type Owned = OsString;
#[stable(feature = "rust1", since = "1.0.0")]
impl ToOwned for OsStr {
type Owned = OsString;
- fn to_owned(&self) -> OsString { self.to_os_string() }
+ fn to_owned(&self) -> OsString {
+ self.to_os_string()
+ }
+ fn clone_into(&self, target: &mut OsString) {
+ target.clear();
+ target.push(self);
+ }
}
#[stable(feature = "rust1", since = "1.0.0")]
}
#[stable(feature = "rust1", since = "1.0.0")]
let boxed = <Box<OsStr>>::default();
assert!(boxed.is_empty());
}
let boxed = <Box<OsStr>>::default();
assert!(boxed.is_empty());
}
+
+ #[test]
+ fn test_os_str_clone_into() {
+ let mut os_string = OsString::with_capacity(123);
+ os_string.push("hello");
+ let os_str = OsStr::new("bonjour");
+ os_str.clone_into(&mut os_string);
+ assert_eq!(os_str, os_string);
+ assert!(os_string.capacity() >= 123);
+ }
#![feature(str_utf16)]
#![feature(test, rustc_private)]
#![feature(thread_local)]
#![feature(str_utf16)]
#![feature(test, rustc_private)]
#![feature(thread_local)]
+#![feature(toowned_clone_into)]
#![feature(try_from)]
#![feature(unboxed_closures)]
#![feature(unicode)]
#![feature(try_from)]
#![feature(unboxed_closures)]
#![feature(unicode)]
fn to_owned(&self) -> PathBuf {
self.to_path_buf()
}
fn to_owned(&self) -> PathBuf {
self.to_path_buf()
}
+ fn clone_into(&self, target: &mut PathBuf) {
+ self.inner.clone_into(&mut target.inner);
+ }
}
#[stable(feature = "rust1", since = "1.0.0")]
}
#[stable(feature = "rust1", since = "1.0.0")]
assert_eq!(&*boxed, &*path_buf);
assert_eq!(&*path_buf, path);
}
assert_eq!(&*boxed, &*path_buf);
assert_eq!(&*path_buf, path);
}
+
+ #[test]
+ fn test_clone_into() {
+ let mut path_buf = PathBuf::from("supercalifragilisticexpialidocious");
+ let path = Path::new("short");
+ path.clone_into(&mut path_buf);
+ assert_eq!(path, path_buf);
+ assert!(path_buf.into_os_string().capacity() >= 15);
+ }