Crates.io | slice_queue |
lib.rs | slice_queue |
version | 0.3.2 |
source | src |
created_at | 2018-08-14 19:40:18.333545 |
updated_at | 2018-09-09 15:43:27.465889 |
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).