diff options
| author | Kevin Butler <haqkrs@gmail.com> | 2015-11-03 04:26:45 +0000 |
|---|---|---|
| committer | Kevin Butler <haqkrs@gmail.com> | 2015-11-03 11:25:34 +0000 |
| commit | 7690ec89ffeac4b4537e71c980d65ead9177d76c (patch) | |
| tree | 84d51247ef11718e193d90b91be7ee15c8dc9830 /src/libstd | |
| parent | eacd35984bbd98d514dd1d9af54b66d9de089ec7 (diff) | |
| download | rust-7690ec89ffeac4b4537e71c980d65ead9177d76c.tar.gz rust-7690ec89ffeac4b4537e71c980d65ead9177d76c.zip | |
libstd: implement From<&Path|PathBuf> for Cow<Path>
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/path.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libstd/path.rs b/src/libstd/path.rs index 0559849f6a6..b3f755a60a5 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1166,6 +1166,22 @@ impl<'a> IntoCow<'a, Path> for &'a Path { } } +#[stable(feature = "cow_from_path", since = "1.6.0")] +impl<'a> From<&'a Path> for Cow<'a, Path> { + #[inline] + fn from(s: &'a Path) -> Cow<'a, Path> { + Cow::Borrowed(s) + } +} + +#[stable(feature = "cow_from_path", since = "1.6.0")] +impl<'a> From<PathBuf> for Cow<'a, Path> { + #[inline] + fn from(s: PathBuf) -> Cow<'a, Path> { + Cow::Owned(s) + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl ToOwned for Path { type Owned = PathBuf; @@ -2003,6 +2019,26 @@ mod tests { } #[test] + fn into() { + use borrow::Cow; + + let static_path = Path::new("/home/foo"); + let static_cow_path: Cow<'static, Path> = static_path.into(); + let pathbuf = PathBuf::from("/home/foo"); + + { + let path: &Path = &pathbuf; + let borrowed_cow_path: Cow<Path> = path.into(); + + assert_eq!(static_cow_path, borrowed_cow_path); + } + + let owned_cow_path: Cow<'static, Path> = pathbuf.into(); + + assert_eq!(static_cow_path, owned_cow_path); + } + + #[test] #[cfg(unix)] pub fn test_decompositions_unix() { t!("", |
