An attempt to rewrite the laminarmq
I/O layer
to accommodate bounded memory overhead during read/write ops.
laminarmq-io
is a library crate. In order to use it, add the following to your Cargo.toml
[dependencies]
laminarmq-io = { git = "https://github.com/arindas/laminarmq-io.git" }
This crate provides the following I/O related traits:
The "Wrapper Implemented on" column denotes on which underlying trait, the current trait has an impl with the help of a wrapper struct wrapping the mentioned trait. For example, [
StreamRead
] is implemented by a wrapper struct [AsyncReadStreamRead
] which wraps an [AsyncRead
] instance.Some traits in this table also have direct impls on other trait types e.g:
impl<T> StreamAppend for T where T: AsyncAppend { /* ... */ }
They are marked with (trait impl).
This library makes the following improvements over existing I/O primitives in laminarmq
:
- Provides traits at individual operaton level i.e
Read
/Append
level as opposed to a unifiedStorage
trait - All operations are exclusive with a
&mut self
receiver to avoid internal locks - Supports both streaming read and streaming write operations
- Provides impls on both filessytem based APIs and cloud object storage APIs such as S3
This repository is licensed under the same terms as laminarmq
.
See LICENSE for more details.