bendy icon indicating copy to clipboard operation
bendy copied to clipboard

How to handle unused tokens while decoding?

Open 0ndorio opened this issue 6 years ago • 1 comments

The port of additional test cases (#20) to fix issue #7 revealed a new question. The original test suite contained some cases marked as "illegal" which contain more tokens than actually required to restore the expected data type. Example: Decoding i12345e5:hellointo an integer.

How should FromBencode handle the case? Potential solutions I can think of:

  • silently drop them (as we do right now)
  • return an error variant which contains the unused tokens
  • add an additional default implementation next to from_bencode with stricter handling

0ndorio avatar Mar 05 '19 09:03 0ndorio

I think the best solution is something like the last one, but we make from_bencode return a Result<(Self, &[u8]), Error> (where the &[u8] is what's left in the input string), and then have a from_bencode_complete that converts the case where there's something left into an error

I'm not firm on the naming; I'd also be OK with from_bencode_partial and from_bencode for the current behaviour and the new behaviour, respectively

thequux avatar Mar 05 '19 12:03 thequux