29 lines
532 B
Rust
29 lines
532 B
Rust
//@ run-pass
|
|
#![allow(dead_code)]
|
|
|
|
#[derive(Copy, Clone)]
|
|
struct LM { resize_at: usize, size: usize }
|
|
|
|
enum HashMap<K,V> {
|
|
HashMap_(LM, Vec<(K,V)>)
|
|
}
|
|
|
|
fn linear_map<K,V>() -> HashMap<K,V> {
|
|
HashMap::HashMap_(LM{
|
|
resize_at: 32,
|
|
size: 0}, Vec::new())
|
|
}
|
|
|
|
impl<K,V> HashMap<K,V> {
|
|
pub fn len(&mut self) -> usize {
|
|
match *self {
|
|
HashMap::HashMap_(ref l, _) => l.size
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn main() {
|
|
let mut m: Box<_> = Box::new(linear_map::<(),()>());
|
|
assert_eq!(m.len(), 0);
|
|
}
|