auto merge of #11130 : olsonjeffery/rust/master, r=alexcrichton
So that `Uuid` can be used as the key in a `HashMap` or in a `HashSet`, etc The only question I have about this is: Is endianness an issue, here? If so, what's the correct way to proceed?
This commit is contained in:
commit
b8c87fd9fe
@ -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)]
|
||||
|
Loading…
Reference in New Issue
Block a user