Optimization: use structs for enumerators for Vector/Array
The structs don't allocate space on the heap, do not have virtual methods, and do not implement IDisposable