| //@ 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); | |
| } |