1
Fork 0

Override clone_from method for PathBuf and OsString

This commit is contained in:
Benoît du Garreau 2021-04-27 15:05:26 +02:00
parent dc8cb63078
commit 4a8671a2fa
3 changed files with 39 additions and 3 deletions

View file

@ -71,7 +71,6 @@ use crate::sys_common::{AsInner, FromInner, IntoInner};
/// [`&str`]: str
/// [`CStr`]: crate::ffi::CStr
/// [conversions]: super#conversions
#[derive(Clone)]
#[cfg_attr(not(test), rustc_diagnostic_item = "OsString")]
#[stable(feature = "rust1", since = "1.0.0")]
pub struct OsString {
@ -420,6 +419,19 @@ impl Default for OsString {
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl Clone for OsString {
#[inline]
fn clone(&self) -> Self {
OsString { inner: self.inner.clone() }
}
#[inline]
fn clone_from(&mut self, source: &Self) {
self.inner.clone_from(&source.inner)
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl fmt::Debug for OsString {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {

View file

@ -1065,7 +1065,6 @@ impl FusedIterator for Ancestors<'_> {}
/// ```
///
/// Which method works best depends on what kind of situation you're in.
#[derive(Clone)]
#[cfg_attr(not(test), rustc_diagnostic_item = "PathBuf")]
#[stable(feature = "rust1", since = "1.0.0")]
// FIXME:
@ -1406,6 +1405,19 @@ impl PathBuf {
}
}
#[stable(feature = "rust1", since = "1.0.0")]
impl Clone for PathBuf {
#[inline]
fn clone(&self) -> Self {
PathBuf { inner: self.inner.clone() }
}
#[inline]
fn clone_from(&mut self, source: &Self) {
self.inner.clone_from(&source.inner)
}
}
#[stable(feature = "box_from_path", since = "1.17.0")]
impl From<&Path> for Box<Path> {
fn from(path: &Path) -> Box<Path> {

View file

@ -14,7 +14,7 @@ use crate::sys_common::{AsInner, FromInner, IntoInner};
use core::str::lossy::Utf8Lossy;
#[derive(Clone, Hash)]
#[derive(Hash)]
pub(crate) struct Buf {
pub inner: Vec<u8>,
}
@ -53,6 +53,18 @@ impl fmt::Display for Buf {
}
}
impl Clone for Buf {
#[inline]
fn clone(&self) -> Self {
Buf { inner: self.inner.clone() }
}
#[inline]
fn clone_from(&mut self, source: &Self) {
self.inner.clone_from(&source.inner)
}
}
impl IntoInner<Vec<u8>> for Buf {
fn into_inner(self) -> Vec<u8> {
self.inner