shared-mem-queue 0.4.0

Single-writer single-reader queues which can be used for inter-processor-communication in a shared memory region
Documentation
{ nightly ? false }:
let
  nixpkgsBase = import (fetchTarball {
    name = "nixpkgs-stable-24.05";
    url = "https://github.com/NixOS/nixpkgs/archive/refs/tags/24.05.tar.gz";
    sha256 = "1lr1h35prqkd1mkmzriwlpvxcb34kmhc9dnr48gkm8hh089hifmx";
  });

  # Oxalica's Rust overlay gives us the rust-bin function which allows us
  # to select a specific Rust toolchain. Furthermore, we can configure
  # additional targets like shown below.
  rustOverlay = import (builtins.fetchTarball {
    name = "rust-overlay-2024-10-15";
    url = "https://github.com/oxalica/rust-overlay/archive/4c6e317300f05b8871f585b826b6f583e7dc4a9b.tar.gz";
    sha256 = "1zg6k59fh3815wm03dv8dx7g0ykrb2bb5k60daplz30haixj37ky";
  });

  nixpkgs = nixpkgsBase {
    overlays = [ rustOverlay ];
  };

  # Choose between a specific Rust channel and 'latest', between stable and nightly
  # For nightly, we use a specific one so we do not download a new compiler every day
  rustChannel = (
    if nightly
    then nixpkgs.rust-bin.nightly."2024-10-15"
    # Stable Version of current nixpkgs
    else nixpkgs.rust-bin.stable."1.81.0"
  ).default;

  # cargo-udeps only runs on nightly so we only need to include it if on nightly
  # this lets us skip downloading another nixpkgs when not required
  optionalCargoUdeps =
    if nightly
    then [ nixpkgs.cargo-udeps ]
    else [ ];
in
with nixpkgs;
mkShell {
  buildInputs = [
    rustChannel
    cargo-deny
    cargo-readme
    gitlab-clippy
    cargo-tarpaulin
    cargo2junit
    nodePackages.cspell
  ] ++ optionalCargoUdeps;

  RUST_BACKTRACE = 1;
}