Structs

A vector type optimized for cases where this size is usually 0 (cf. SmallVec). The Option<Box<..>> wrapping allows us to represent a zero sized vector with None, which uses only a single (null) pointer.