Read/write vs stream

What exactly is a "streaming" interface? Is it always meant "as opposed to read/write"?

From what I can tell, read/write pass in slices to buffers, that the application keeps ownership of, and return length and implement read/write traits (and thus can be used with things like {std,tokio}::io::copy()) while stream interfaces tend to take in or return entire buffers (where ownership is passed to/returned from the library), and the reading part implements Iterator (or equivalent).

XY: I'm developing an interface that allows transferring blobs, and the caller can request to be given a "file like" object (implements read/write traits) or "stream like" object (implements Iterator for the receiver), and I'm wondering if I'm using the appropriate (read: non-confusing) terminology.

This is one of those “words don’t have exactly one meaning” problems.

In computing and programming, using Rust or not, the adjective “streaming” implies: the data processing overlaps with receiving or sending the data, rather than being separate in time. That’s all; it says nothing about what the API or types involved are.

“Streams” in Rust often mean futures::stream specifically, but not always.

I would not recommend using the word "stream" in connection to iterators. The distinction you're making is not about either "streaming" or "stream".