parse : List(U8) -> Try(a, [BytesRemain, ParseError(Str)]) where [a.parser_for : Parser -> State -> Try({ value : a, rest : State }, _)]
parse_partial : List(U8) -> Try({ value : a, rest : List(U8) }, Str) where [a.parser_for : Parser -> State -> Try({ value : a, rest : State }, _)]