lib.rs 1.1 KB
Newer Older
1
#![feature(allocator_api)]
2
#![feature(box_syntax)]
A
Alexis Beingessner 已提交
3
#![feature(drain_filter)]
4
#![feature(exact_size_is_empty)]
5
#![feature(pattern)]
6
#![feature(repeat_generic_slice)]
7
#![feature(try_reserve)]
8
#![feature(unboxed_closures)]
9
#![deny(rust_2018_idioms)]
S
Simonas Kazlauskas 已提交
10

11 12
use std::hash::{Hash, Hasher};
use std::collections::hash_map::DefaultHasher;
13

14
mod arc;
15 16
mod binary_heap;
mod btree;
17
mod cow_str;
18
mod fmt;
19
mod heap;
20
mod linked_list;
21
mod rc;
22 23 24 25 26
mod slice;
mod str;
mod string;
mod vec_deque;
mod vec;
27 28

fn hash<T: Hash>(t: &T) -> u64 {
29
    let mut s = DefaultHasher::new();
30 31 32
    t.hash(&mut s);
    s.finish()
}
33

34 35 36
// FIXME: Instantiated functions with i128 in the signature is not supported in Emscripten.
// See https://github.com/kripken/emscripten-fastcomp/issues/169
#[cfg(not(target_os = "emscripten"))]
37 38 39 40 41 42 43 44
#[test]
fn test_boxed_hasher() {
    let ordinary_hash = hash(&5u32);

    let mut hasher_1 = Box::new(DefaultHasher::new());
    5u32.hash(&mut hasher_1);
    assert_eq!(ordinary_hash, hasher_1.finish());

T
Tatsuyuki Ishi 已提交
45
    let mut hasher_2 = Box::new(DefaultHasher::new()) as Box<dyn Hasher>;
46 47 48
    5u32.hash(&mut hasher_2);
    assert_eq!(ordinary_hash, hasher_2.finish());
}