It seems to me that this code, or something like it, should be not here, but in `VecWriterProxy`. The struct shouldn't worry about where it's being written to; rather the vector should prepare the correct environment for writing its elements.