Rust's nom as a streaming parser
The go-to parser in Rust seems to be nom[^go-to-parser], and it has streaming built-in. However the good news stops there, since it’s not completely clear what this does and how it’s supposed to work. There is an (unanswered) github issue asking for a small example, another issue explaining that there are some corner cases that cannot be solved with the streaming parser, a stackoverflow question on the subject.
It took me some time before I understood how to think about streaming parsing, so I decided to write down my thoughts, both for my own future reference, as others.