I don't see a foot gun, you just need to check if you have consumed the whole input. Which is the norm in nearly any streaming api
The whole reason for returning a result enum would be so I don't forget to also check somewhere else whether something could possibly have gone wrong.
Especially when there is a specific result type.