A representation of a token. The body field points to the underlying string
from which the characters in this token come. The indices field contains
a range representing which contiguous characters are used. The tags field is
a vector of borrowed strings with user-defined values.
Represents the possible shapes of a vector of tokens. A vector of tokens could
contain multiple tokens, a single token (a common special case), or none at
all (a rare corner case).
Chops up a string slice into a vector of owned tokens. Also appends an empty
token to the tail of the vector to enable certain lexing functions like
scanning for words.