mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
auto merge of #10359 : tomassedovic/rust/typeid-iterbytes, r=pcwalton
I'm not sure this is something you're interested in, but I was playing around the Any trait a bit and I wanted to try it as a key in a HashMap. To do that, TypeId needs to implement IterBytes.
This commit is contained in:
commit
162ba894bc
@ -14,6 +14,7 @@
|
||||
use cast::transmute;
|
||||
use cmp::Eq;
|
||||
use option::{Option, Some, None};
|
||||
use to_bytes::{IterBytes, Cb};
|
||||
use to_str::ToStr;
|
||||
use unstable::intrinsics;
|
||||
use util::Void;
|
||||
@ -42,6 +43,12 @@ impl Eq for TypeId {
|
||||
}
|
||||
}
|
||||
|
||||
impl IterBytes for TypeId {
|
||||
fn iter_bytes(&self, lsb0: bool, f: Cb) -> bool {
|
||||
self.t.iter_bytes(lsb0, f)
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Any trait
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -175,6 +182,7 @@ mod tests {
|
||||
use super::*;
|
||||
use super::AnyRefExt;
|
||||
use option::{Some, None};
|
||||
use hash::Hash;
|
||||
|
||||
#[deriving(Eq)]
|
||||
struct Test;
|
||||
@ -197,6 +205,13 @@ mod tests {
|
||||
assert_eq!(c, f);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn type_id_hash() {
|
||||
let (a, b) = (TypeId::of::<uint>(), TypeId::of::<uint>::());
|
||||
|
||||
assert_eq!(a.hash(), b.hash());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn any_as_void_ptr() {
|
||||
let (a, b, c) = (~5u as ~Any, ~TEST as ~Any, ~Test as ~Any);
|
||||
|
Loading…
Reference in New Issue
Block a user