Suppose a streaming parser receives a buffer and can report an incomplete record. Who owns those bytes after failure, and where will the next call begin? Result distinguishes success from failure. Its variants do not specify whether the parser advanced a cursor, changed scratch storage or preserved the input.
Consider a hypothetical interface where the caller owns a vector and lends the parser a shared slice. The parser owns its cursor and temporary decoded fields. On success, it advances the cursor past one complete record. On incomplete input, it leaves the cursor at that record's start and discards the tentative fields. On malformed input, it also preserves that start position, while returning the offending offset. An incomplete diagnostic can carry the record start and the position reached by scanning. That scanned position is evidence about inspection, not a commitment to consume bytes.
Those are proposed guarantees implemented by staging updates until success. Returning Err alone supplies none of them. The caller can retain the unconsumed suffix, append more bytes and retry. If a successful record borrows from the vector, however, the caller must finish using that access before an operation requiring mutable access to the vector.
Taking ownership of the vector would require another decision about whether failure returns it. Borrowing keeps ownership with the caller, but the failure position and permitted next operations still deserve explicit documentation.