Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ println!("{:?}", toggles);
```rust
use enum_toggles::EnumToggles;
use log::warn;
use once_cell::sync::Lazy;
use std::env;
use std::ops::Deref;
use std::sync::LazyLock;
use strum_macros::{AsRefStr, EnumIter};

#[derive(AsRefStr, EnumIter, PartialEq)]
Expand All @@ -62,7 +62,7 @@ enum MyToggle {
FeatureB,
}

pub static TOGGLES: Lazy<EnumToggles<MyToggle>> = Lazy::new(|| {
pub static TOGGLES: LazyLock<EnumToggles<MyToggle>> = LazyLock::new(|| {
let mut toggle:EnumToggles<MyToggle> = EnumToggles::new();
let filepath = env::var("TOGGLES_FILE");
match filepath {
Expand Down
18 changes: 10 additions & 8 deletions benches/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ fn enum_toggles(toggles: &EnumToggles<TestToggles>) {
black_box(toggles.get(TestToggles::Spades as usize));
}

fn map_toggles(hash_map_toggles: &HashMap<&'static str, bool>) {
black_box(hash_map_toggles.get("Hearts"));
black_box(hash_map_toggles.get("Tiles"));
black_box(hash_map_toggles.get("Pikes"));
black_box(hash_map_toggles.get("Spades"));
fn list_toggles(list_toggles_value: &Vec<bool>) {
black_box(list_toggles_value[TestToggles::Hearts as usize]);
black_box(list_toggles_value[TestToggles::Tiles as usize]);
black_box(list_toggles_value[TestToggles::Pikes as usize]);
black_box(list_toggles_value[TestToggles::Spades as usize]);
}

fn compare_methods(c: &mut Criterion) {
Expand All @@ -38,16 +38,18 @@ fn compare_methods(c: &mut Criterion) {
hash_map_toggles.insert("Pikes", false);
hash_map_toggles.insert("Spades", false);

let list_toggles_value: Vec<bool> = vec![false; 4];

group.bench_with_input(
BenchmarkId::new("Readonly-toggles", "enum_toggles"),
&toggles,
|b, input| b.iter(|| enum_toggles(black_box(input))),
);

group.bench_with_input(
BenchmarkId::new("Readonly-toggles", "HashMap"),
&hash_map_toggles,
|b, input| b.iter(|| map_toggles(black_box(input))),
BenchmarkId::new("Readonly-toggles", "List"),
&list_toggles_value,
|b, input| b.iter(|| list_toggles(black_box(input))),
);

group.finish();
Expand Down
16 changes: 8 additions & 8 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
//! ```rust
//! use enum_toggles::EnumToggles;
//! use log::warn;
//! use once_cell::sync::Lazy;
//! use std::env;
//! use std::ops::Deref;
//! use std::sync::LazyLock;
//! use strum_macros::{AsRefStr, EnumIter};
//!
//! #[derive(AsRefStr, EnumIter, PartialEq)]
Expand All @@ -43,7 +43,7 @@
//! FeatureB,
//! }
//!
//! pub static TOGGLES: Lazy<EnumToggles<MyToggle>> = Lazy::new(|| {
//! pub static TOGGLES: LazyLock<EnumToggles<MyToggle>> = LazyLock::new(|| {
//! let mut toggle:EnumToggles<MyToggle> = EnumToggles::new();
//! let filepath = env::var("TOGGLES_FILE");
//! match filepath {
Expand Down Expand Up @@ -198,21 +198,21 @@ mod tests {
}

#[test]
fn default() {
fn test_default() {
let toggles: EnumToggles<TestToggles> = EnumToggles::default();
assert_eq!(toggles.toggles_value.len(), TestToggles::iter().count());
}

#[test]
fn set_all() {
fn test_set_all() {
let mut toggles: EnumToggles<TestToggles> = EnumToggles::new();
toggles.set_all(HashMap::from([("Toggle1".to_string(), true)]));
assert_eq!(toggles.get(TestToggles::Toggle1 as usize), true);
assert_eq!(toggles.get(TestToggles::Toggle2 as usize), false);
}

#[test]
fn set_by_name() {
fn test_set_by_name() {
let mut toggles: EnumToggles<TestToggles> = EnumToggles::new();
assert_eq!(toggles.get(TestToggles::Toggle1 as usize), false);
toggles.set_by_name("Toggle1", true);
Expand All @@ -222,13 +222,13 @@ mod tests {
}

#[test]
fn display() {
fn test_display() {
let toggles: EnumToggles<TestToggles> = EnumToggles::new();
assert_eq!(format!("{:?}", toggles).is_empty(), false);
}

#[test]
fn load_from_file() {
fn test_load_from_file() {
// Create a temporary file
let mut temp_file =
tempfile::NamedTempFile::new().expect("Unable to create temporary file");
Expand Down Expand Up @@ -261,7 +261,7 @@ mod tests {
#[should_panic(
expected = "Out-of-bounds access. The provided toggle_id is 5, but the array size is 2. Please use the default enum value."
)]
fn deviant_toggles() {
fn test_deviant_toggles() {
let mut toggles: EnumToggles<DeviantToggles> = EnumToggles::new();
toggles.set(DeviantToggles::Toggle1 as usize, true);
}
Expand Down