Improve PacketParser::next()'s return type
Change PacketParser::next()'s and PacketParser::recurse()'s return type from:
Result<(Packet, isize, PacketParserResult<'a>, isize)>
to
Result<((Packet, Vec<u8>), (PacketParserResult<'a>, &'a [u8]))>
That is:
- Instead of the depth parameter, we return a path specification.
- By using a pair of tuples, we more closely bind the packet to its location.
This is nice when we want to completely ignore the finished packet. Then, we just
write:
let (_, (ppr, ppr_path)) = ...
instead oflet (_, _, ppr, ppr_path) = ...
. which is a bit cleaner.