about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorKevin Butler <haqkrs@gmail.com>2015-11-03 04:26:45 +0000
committerKevin Butler <haqkrs@gmail.com>2015-11-03 11:25:34 +0000
commit7690ec89ffeac4b4537e71c980d65ead9177d76c (patch)
tree84d51247ef11718e193d90b91be7ee15c8dc9830 /src/libstd
parenteacd35984bbd98d514dd1d9af54b66d9de089ec7 (diff)
downloadrust-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.rs36
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!("",