about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJorge Aparicio <japaricious@gmail.com>2015-02-25 11:43:39 -0500
committerJorge Aparicio <japaricious@gmail.com>2015-02-25 12:34:50 -0500
commit2de7a7c9badf71978c53f07fc6b2db097a8d4213 (patch)
treeee039ab10f470535464b6b25759480bbcf47772c /src/libstd
parent880fb89bde126aa43fc348d0b93839d3d18a1f51 (diff)
downloadrust-2de7a7c9badf71978c53f07fc6b2db097a8d4213.tar.gz
rust-2de7a7c9badf71978c53f07fc6b2db097a8d4213.zip
impl IntoCow for Path[Buf]
Diffstat (limited to 'src/libstd')
-rwxr-xr-xsrc/libstd/path.rs34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/libstd/path.rs b/src/libstd/path.rs
index 88543ad85ed..b85a0dcec81 100755
--- a/src/libstd/path.rs
+++ b/src/libstd/path.rs
@@ -108,7 +108,7 @@
 use core::prelude::*;
 
 use ascii::*;
-use borrow::{Borrow, ToOwned, Cow};
+use borrow::{Borrow, IntoCow, ToOwned, Cow};
 use cmp;
 use iter::{self, IntoIterator};
 use mem;
@@ -987,6 +987,18 @@ impl Borrow<Path> for PathBuf {
     }
 }
 
+impl IntoCow<'static, Path> for PathBuf {
+    fn into_cow(self) -> Cow<'static, Path> {
+        Cow::Owned(self)
+    }
+}
+
+impl<'a> IntoCow<'a, Path> for &'a Path {
+    fn into_cow(self) -> Cow<'a, Path> {
+        Cow::Borrowed(self)
+    }
+}
+
 impl ToOwned for Path {
     type Owned = PathBuf;
     fn to_owned(&self) -> PathBuf { self.to_path_buf() }
@@ -1412,6 +1424,26 @@ mod tests {
     );
 
     #[test]
+    fn into_cow() {
+        use borrow::{Cow, IntoCow};
+
+        let static_path = Path::new("/home/foo");
+        let static_cow_path: Cow<'static, Path> = static_path.into_cow();
+        let pathbuf = PathBuf::new("/home/foo");
+
+        {
+            let path: &Path = &pathbuf;
+            let borrowed_cow_path: Cow<Path> = path.into_cow();
+
+            assert_eq!(static_cow_path, borrowed_cow_path);
+        }
+
+        let owned_cow_path: Cow<'static, Path> = pathbuf.into_cow();
+
+        assert_eq!(static_cow_path, owned_cow_path);
+    }
+
+    #[test]
     #[cfg(unix)]
     pub fn test_decompositions_unix() {
         t!("",