| Crates.io | slice_queue |
| lib.rs | slice_queue |
| version | 0.3.2 |
| created_at | 2018-08-14 19:40:18.333545+00 |
| updated_at | 2018-09-09 15:43:27.465889+00 |
| description | This library provides an VecQueue for efficient working with (byte-)slices |
| homepage | |
| repository | https://github.com/KizzyCode/slice_queue |
| max_upload_size | |
| id | 79452 |
| size | 52,943 |
Welcome to my slice_queue-library 🎊
This library provides a optimized queue for efficient working with (byte-)slices. It allows you to
efficiently push an arbitrary amount of elements to the back by either consuming them or by cloning/copying them from
a slice (if the type supports the Clone/Copy trait)
communicate and enforce a limit on the amount of elements to store
efficiently pop an arbitrary amount of elements from the front (optionally into a slice to avoid uneccessary reallocations)
access the underlying buffer directly by using (range-)indices
dereference the SliceQueue<T> by propagating the deref()-call to the underlying Vec<T> (can be disabled; see
Feature-Gates)
access it using the io::Read and io::Write traits
"split" it into R/W-halves using the ReadableSliceQueue<T> and WriteableSliceQueue<T> traits or the io::Read
and io::Write traits
deref: This feature allows you to deref the SliceQueue<T> by propagating any deref()-call to the underlying
Vec<T> (which usually results in a slice). Because in some projects this could be considered as "bad practice", it
is possible to disable this behaviour. This feature is enabled by default.
unsafe_fast_code: Because the main goal of this library is performance, we use raw pointer access and manual memory
management in some places. Especially for Copy-types like u8, this improves the performance dramatically. Since
this requires unsafe code which may be not acceptible in your case, it is possible to replace the unsafe code with
safe Vec-operations by disabling this feature. This feature is enabled by default.
To build and open the documentation, go into the project's root-directory and run cargo doc --release --open
To build this library, change into the projects root-directory and run cargo build --release (or
cargo build --release --features ... to manually specify the features to use); you can find the build in
target/release.
If you use this library for the first time or after an update, we recomment you to run cargo test --release (or
cargo test --release --features ... to manually specify the features to use).