about summary refs log tree commit diff
path: root/src/libserialize/serialize.rs
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2014-03-10 20:47:47 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2014-03-12 18:58:54 -0700
commitd2cfd543f764c4a3bab9149fe54233c4aa20e6d5 (patch)
treedfa0f8b86119fb5c5b2195f90e29d7e344bcc591 /src/libserialize/serialize.rs
parentbe12c9f753fa742dd76127a600ba9f2447d19b39 (diff)
downloadrust-d2cfd543f764c4a3bab9149fe54233c4aa20e6d5.tar.gz
rust-d2cfd543f764c4a3bab9149fe54233c4aa20e6d5.zip
serialize: make Paths serializable
Diffstat (limited to 'src/libserialize/serialize.rs')
-rw-r--r--src/libserialize/serialize.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs
index a94df9975a4..115bb6cb6f3 100644
--- a/src/libserialize/serialize.rs
+++ b/src/libserialize/serialize.rs
@@ -14,6 +14,7 @@
 Core encoding and decoding interfaces.
 */
 
+use std::path;
 use std::rc::Rc;
 use std::vec;
 use std::vec_ng::Vec;
@@ -625,6 +626,32 @@ impl<
     }
 }
 
+impl<E: Encoder> Encodable<E> for path::posix::Path {
+    fn encode(&self, e: &mut E) {
+        self.as_vec().encode(e)
+    }
+}
+
+impl<D: Decoder> Decodable<D> for path::posix::Path {
+    fn decode(d: &mut D) -> path::posix::Path {
+        let bytes: ~[u8] = Decodable::decode(d);
+        path::posix::Path::new(bytes)
+    }
+}
+
+impl<E: Encoder> Encodable<E> for path::windows::Path {
+    fn encode(&self, e: &mut E) {
+        self.as_vec().encode(e)
+    }
+}
+
+impl<D: Decoder> Decodable<D> for path::windows::Path {
+    fn decode(d: &mut D) -> path::windows::Path {
+        let bytes: ~[u8] = Decodable::decode(d);
+        path::windows::Path::new(bytes)
+    }
+}
+
 // ___________________________________________________________________________
 // Helper routines
 //