about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorJeff Olson <olson.jeffery@gmail.com>2013-12-23 23:44:58 -0800
committerJeff Olson <olson.jeffery@gmail.com>2013-12-23 23:44:58 -0800
commit41cbbb656a9d29305fd03fb09d261cbfa0766f7a (patch)
treec9fd50c2c6f4bc413a541d07fa124a2f4447bd52 /src/libextra
parent619c4fce891f31ec234a3ac162d40d3def95956e (diff)
downloadrust-41cbbb656a9d29305fd03fb09d261cbfa0766f7a.tar.gz
rust-41cbbb656a9d29305fd03fb09d261cbfa0766f7a.zip
extra: impl IterBytes for uuid::Uuid
Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/uuid.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libextra/uuid.rs b/src/libextra/uuid.rs
index 9e48c3e7a73..cf40a59a8c5 100644
--- a/src/libextra/uuid.rs
+++ b/src/libextra/uuid.rs
@@ -65,6 +65,7 @@ use std::rand;
 use std::rand::Rng;
 use std::cmp::Eq;
 use std::cast::{transmute,transmute_copy};
+use std::to_bytes::{IterBytes, Cb};
 
 use serialize::{Encoder, Encodable, Decoder, Decodable};
 
@@ -104,6 +105,11 @@ pub struct Uuid {
     /// The 128-bit number stored in 16 bytes
     bytes: UuidBytes
 }
+impl IterBytes for Uuid {
+    fn iter_bytes(&self, _: bool, f: Cb) -> bool {
+        f(self.bytes.slice_from(0))
+    }
+}
 
 /// A UUID stored as fields (identical to UUID, used only for conversions)
 struct UuidFields {
@@ -796,6 +802,17 @@ mod test {
         let u2 = Decodable::decode(&mut ebml::reader::Decoder(doc));
         assert_eq!(u, u2);
     }
+
+    #[test]
+    fn test_iterbytes_impl_for_uuid() {
+        use std::hashmap::HashSet;
+        let mut set = HashSet::new();
+        let id1 = Uuid::new_v4();
+        let id2 = Uuid::new_v4();
+        set.insert(id1);
+        assert!(set.contains(&id1));
+        assert!(!set.contains(&id2));
+    }
 }
 
 #[cfg(test)]