The MultistreamIO<R, W, RW> is for managing multiple IO objects.This thing itself implements Read + Write + Seek + Debug, when these traits methods are called, the selected stream is manipulated.by using this, you can control the 3rd party library to read or write data from/into different stream objects, and you can manipulate these data or streams.
The shared version of the MultistreamIO.Because it’s shared, when the 3rd library owned it, we still can access to it, e.g. switch it to a cursor stream to capture some data.
The StreamType<R, W, RW> is for the MultistreamIO<R, W, RW> to manage multiple IO objects.A stream can be a reader, writer, reader + writer, or cursor.By using the MultistreamIO<R, W, RW> you can control the 3rd party library to write data into different streams and manipulate them.