Description
Wraps Ruby I/O objects with a generic stream interface. It is useful for libraries that need consistent reading, writing, buffering, or protocol handling across different I/O sources.
Stream wrappers can change buffering and error behavior. Test partial reads, timeouts, closed streams, encodings, and large inputs before using them with real protocols.