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