Skip to content

Commit

Permalink
Merge branch 'flake_update'
Browse files Browse the repository at this point in the history
  • Loading branch information
bertof committed Oct 24, 2022
2 parents 89f5be1 + 55546da commit 71ab0fd
Show file tree
Hide file tree
Showing 10 changed files with 405 additions and 140 deletions.
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
**/*.rs.bk
Cargo.lock
tarpaulin-report.html
.direnv/
.pre-commit-config.yaml

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ serde_support = ["serde"]
metrics = []

[dependencies]
byteorder = "1.3"
byteorder = "1.4"
num = "0.4"
rand = "0.8"
rayon = "1.3.1"
rayon = "1.5"
md5 = { version = "0.7", optional = true }
md4 = { version = "0.10", optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
thiserror = "1"

[dev-dependencies]
serde_json = { version = "1.0" }
66 changes: 66 additions & 0 deletions bacon.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# This is a configuration file for the bacon tool
# More info at https://github.com/Canop/bacon

default_job = "check"

[jobs]

[jobs.check]
command = ["cargo", "check", "--color", "always"]
need_stdout = false

[jobs.check-all]
command = ["cargo", "check", "--all-targets", "--color", "always"]
need_stdout = false
watch = ["tests", "benches", "examples"]

[jobs.clippy]
command = ["cargo", "clippy", "--color", "always"]
need_stdout = false

[jobs.clippy-all]
command = ["cargo", "clippy", "--all-targets", "--color", "always"]
need_stdout = false
watch = ["tests", "benches", "examples"]

[jobs.clippy-all-features]
command = ["cargo", "clippy", "--all-features", "--color", "always"]
need_stdout = false
watch = ["tests", "benches", "examples"]

[jobs.test]
command = ["cargo", "test", "--color", "always"]
need_stdout = true
watch = ["tests"]

[jobs.doc]
command = ["cargo", "doc", "--color", "always", "--no-deps"]
need_stdout = false

# if the doc compiles, then it opens in your browser and bacon switches
# to the previous job
[jobs.doc-open]
command = ["cargo", "doc", "--color", "always", "--no-deps", "--open"]
need_stdout = false
on_success = "back" # so that we don't open the browser at each change

# You can run your application and have the result displayed in bacon,
# *if* it makes sense for this crate. You can run an example the same
# way. Don't forget the `--color always` part or the errors won't be
# properly parsed.
[jobs.run]
command = ["cargo", "run", "--color", "always"]
need_stdout = true
allow_warnings = true

# You may define here keybindings that would be specific to
# a project, for example a shortcut to launch a specific job.
# Shortcuts to internal functions (scrolling, toggling, etc.)
# should go in your personal prefs.toml file instead.
[keybindings]
a = "job:check-all"
i = "job:initial"
c = "job:clippy"
d = "job:doc-open"
t = "job:test"
r = "job:run"
116 changes: 116 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

83 changes: 83 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
description = "Minimal flake environment";

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; };
pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
};

outputs = { self, nixpkgs, flake-utils, rust-overlay, pre-commit-hooks }:
with flake-utils.lib;

let overlays = [ rust-overlay.overlays.default (_self: super: { rustc = super.rust-bin.stable.latest.default; }) ]; in
eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system overlays; }; in
{
checks = {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
nixpkgs-fmt.enable = true;
nix-linter.enable = true;
clippy =
let
wrapper = pkgs.symlinkJoin {
name = "clippy-wrapped";
paths = [ pkgs.rustc ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/cargo-clippy \
--prefix PATH : ${lib.makeBinPath [ pkgs.rustc ]}
'';
};
in
{
name = "clippy";
description = "Lint Rust code.";
entry = "${wrapper}/bin/cargo-clippy clippy";
files = "\\.(rs|toml)$";
pass_filenames = false;
};
rustfmt =
let
wrapper = pkgs.symlinkJoin {
name = "rustfmt-wrapped";
paths = [ pkgs.rustc ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/cargo-fmt \
--prefix PATH : ${lib.makeBinPath [ pkgs.rustc ]}
'';
};
in
{
name = "rustfmt";
description = "Format Rust code.";
entry = "${wrapper}/bin/cargo-fmt fmt -- --check --color always";
files = "\\.(rs|toml)$";
pass_filenames = false;
};
};
};
};

devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
bacon
cargo-audit
cargo-outdated
cargo-watch
crate2nix
openssl.dev
pkg-config
rustc
];

shellHook = ''
${self.checks.${system}.pre-commit-check.shellHook}
'';
};
});
}
8 changes: 3 additions & 5 deletions src/data_structure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ where
.unwrap();

// Return cell index
#[allow(clippy::integer_arithmetic)]
(digest_value as usize % self.filter.len()).as_()
})
.collect::<Vec<U>>()
Expand All @@ -126,7 +125,6 @@ where
}

#[cfg(feature = "metrics")]
#[allow(clippy::integer_arithmetic)]
{
if *v == U::zero() {
// Cell is not marked
Expand Down Expand Up @@ -155,7 +153,6 @@ where
}
}

#[allow(unused_variables)]
/// Constructor of the SBF data structure
///
/// - `cells`: Number of cells in the filter,
Expand All @@ -168,7 +165,7 @@ where
hash_number: usize,
max_input_size: usize,
hash_function: HashFunction,
area_number: U,
#[cfg(feature = "metrics")] area_number: U,
) -> Result<Self, Error> {
assert!(cells > U::zero());

Expand Down Expand Up @@ -224,10 +221,10 @@ where
/// Constructor of the SBF data structure using optimal parameters
pub fn new_optimal(
expected_inserts: usize,
area_number: U,
max_fpp: f64,
max_input_size: usize,
hash_function: HashFunction,
#[cfg(feature = "metrics")] area_number: U,
) -> Result<Self, Error> {
let optimal_cells =
(-(expected_inserts as f64) * max_fpp.ln() / (2.0f64.ln().powi(2))) as u64;
Expand All @@ -238,6 +235,7 @@ where
hash_number,
max_input_size,
hash_function,
#[cfg(feature = "metrics")]
area_number,
)
}
Expand Down
14 changes: 3 additions & 11 deletions src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,13 @@
#[cfg(feature = "serde_support")]
use serde::{Deserialize, Serialize};
use thiserror::Error;

/// Custom error definitions
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Error)]
#[cfg_attr(feature = "serde_support", derive(Serialize, Deserialize))]
pub enum Error {
/// Access index is larger than the maximum size allowed
#[error("Index out of bounds")]
IndexOutOfBounds,
}

impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", match &self {
Error::IndexOutOfBounds => "Index out of bounds",
})
}
}

impl std::error::Error for Error {}
Loading

0 comments on commit 71ab0fd

Please sign in to comment.