Why did you make the one-element enumeration? Did you want a newtype pattern instead (struct FooBar(String);)? Why didn’t you just Option the inner type?
I don’t really get what you’re going at here.
(That said, parsing in Rust tends to use a lot of very specific types, lots of nested Results and Options, and code generation (macros) to clean up repetition. We tend to be correctness-focused and near overdosed on zero cost abstractions sometimes.)