conqueue 0.2.1

Yet another multi-producer, single-consumer queue (MPSC)
Documentation

Conqueue

Crates.io Crates.io

Conqueue is yet another multi-producer, single-consumer queue (MPSC) for the Rust programming language.

Getting Started

To get started, add the following to your Cargo.toml file:

[dependencies]
conqueue = "0.2.1"

Then, at the root of your crate:

extern crate conqueue

Finally, create a sender/receiver pair. The sender may be cloned to allow concurrent producers, and it is both Send and Sync. The receiver is Send so it may be moved to other threads.

let (tx1, mut rx) = conqueue::Queue::unbounded();
let tx2 = tx1.clone();

tx1.push(1);
tx2.push(2);

while let Some(value) = rx.pop() {
  println!("popped: {}", value);
}

Release Notes

0.2.1 - 2019-08-29

  • Republish to fix README.md on Crates.io

0.2.0 - 2019-08-29

  • Items that are pushed into a queue are now dropped if there is no receiver

0.1.1 - 2019-07-30

  • Senders should be Send

0.1.0 - 2019-07-30

  • Initial release. Likely not production ready.

Developer Notes

To run the tests, execute the following:

cargo test

To run a benchmark for the queue, execute the following:

cargo test --release -- --ignored --nocapture

To release the create, perform the following:

  1. Edit Cargo.toml, bumping the version as appropriate.
  2. Edit README.md, adding an entry to the Release Notes, and updating the TOML snippet's version.
  3. Commit these changes and push them to master.
  4. Create and push a tag that starts with "v" -- e.g. "v0.2.0"

Inspiration

This code is largely based on majek's implementation of Michael-Scott queue. You can find the code here and a blog post here.

License

Conqueue is provided under the MIT license.