pub type Iter<'a, T, P> = Map<IterPtr<'a, T, P>, fn(&SharedPointer<T, P>) -> &T>;
pub struct Iter<'a, T, P> { /* private fields */ }