diff --git a/Cargo.lock b/Cargo.lock index 732957f..4ebf2e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,33 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + [[package]] name = "bitflags" version = "2.9.1" @@ -20,22 +47,158 @@ dependencies = [ "wyz", ] +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +dependencies = [ + "anstyle", + "clap_lex", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "criterion" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools 0.13.0", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "enum-toggles" version = "1.0.0" dependencies = [ "bitvec", + "criterion", "log", "once_cell", "strum", "strum_macros", "tempfile", + "yaml-rust", ] [[package]] @@ -72,18 +235,68 @@ dependencies = [ "wasi", ] +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "libc" version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -96,12 +309,61 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + [[package]] name = "proc-macro2" version = "1.0.95" @@ -132,6 +394,55 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + [[package]] name = "rustix" version = "1.0.7" @@ -151,6 +462,53 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + [[package]] name = "strum" version = "0.27.1" @@ -200,12 +558,32 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.14.2+wasi-0.2.4" @@ -215,6 +593,83 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + [[package]] name = "windows-sys" version = "0.59.0" @@ -305,3 +760,12 @@ checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" dependencies = [ "tap", ] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] diff --git a/Cargo.toml b/Cargo.toml index 75bb4fa..72d09b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,13 @@ bitvec = "1.0" log = "0.4" strum = "0.27.1" strum_macros = "0.27.1" +yaml-rust = "0.4.5" [dev-dependencies] +criterion = { version = "0.6", features = ["html_reports"] } once_cell = "1.21.3" tempfile = "3.10" + +[[bench]] +name = "bench" +harness = false diff --git a/README.md b/README.md index 486fec4..feff4a6 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,11 @@ There's a direct relationship where each string name corresponds to a unique nam cargo add enum-toggles strum strum_macros ``` -- File `toggles.txt` conains: +- File `toggles.yaml` conains: -```txt -0 FeatureA -1 FeatureB +```yaml +FeatureA: 0 +FeatureB: 1 ``` ```rust @@ -42,8 +42,8 @@ enum MyToggle { let mut toggles: EnumToggles:: = EnumToggles::new(); toggles.set(MyToggle::FeatureA as usize, true); toggles.set_by_name("FeatureB", true); // Mapped to MyToggle::FeatureB -// toggles.load_from_file("toggles.txt"); // Load toggles state from file -println!("{}", toggles); +// toggles.load_from_file("toggles.yaml"); // Load toggles state from file +println!("{:?}", toggles); ``` ### Example 2: With concucrency context @@ -76,5 +76,5 @@ pub static TOGGLES: Lazy> = Lazy::new(|| { toggle }); -println!("{}", TOGGLES.deref()); +println!("{:?}", TOGGLES.deref()); ``` diff --git a/benches/bench.rs b/benches/bench.rs new file mode 100644 index 0000000..050fde7 --- /dev/null +++ b/benches/bench.rs @@ -0,0 +1,57 @@ +use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; +use enum_toggles::EnumToggles; +use std::collections::HashMap; +use std::hint::black_box; +use strum_macros::{AsRefStr, EnumIter}; + +#[derive(AsRefStr, EnumIter, PartialEq)] + +pub enum TestToggles { + Hearts, + Tiles, + Pikes, + Spades, +} + +fn enum_toggles(toggles: &EnumToggles) { + black_box(toggles.get(TestToggles::Hearts as usize)); + black_box(toggles.get(TestToggles::Tiles as usize)); + black_box(toggles.get(TestToggles::Pikes as usize)); + 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 compare_methods(c: &mut Criterion) { + let mut group = c.benchmark_group("Readonly-toggles"); + + let toggles: EnumToggles = EnumToggles::new(); + + let mut hash_map_toggles: HashMap<&'static str, bool> = HashMap::new(); + hash_map_toggles.insert("Hearts", false); + hash_map_toggles.insert("Tiles", false); + hash_map_toggles.insert("Pikes", false); + hash_map_toggles.insert("Spades", false); + + 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))), + ); + + group.finish(); +} + +criterion_group!(benches, compare_methods); +criterion_main!(benches); diff --git a/src/lib.rs b/src/lib.rs index 17cf1b8..e426e10 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,10 +4,10 @@ //! //! # Example //! -//! - File `toggles.txt` conains: -//! ```txt -//! 0 FeatureA -//! 1 FeatureB +//! - File `toggles.yaml` conains: +//! ```yaml +//! FeatureA: 0 +//! FeatureB: 1 //! ``` //! //! - Basic usage @@ -24,8 +24,8 @@ //! let mut toggles: EnumToggles:: = EnumToggles::new(); //! toggles.set(MyToggle::FeatureA as usize, true); //! toggles.set_by_name("FeatureB", true); // Mapped to MyToggle::FeatureB -//! // toggles.load_from_file("toggles.txt"); // Load toggles state from file -//! println!("{}", toggles); +//! // toggles.load_from_file("toggles.yaml"); // Load toggles state from file +//! println!("{:?}", toggles); //! ``` //! //! - With concucrency context @@ -57,14 +57,14 @@ //! toggle //! }); //! -//! println!("{}", TOGGLES.deref()); +//! println!("{:?}", TOGGLES.deref()); //! ``` //! use bitvec::prelude::*; -use log::error; -use std::io::BufRead; +use std::fs; use std::{collections::HashMap, fmt}; +use yaml_rust::{Yaml, YamlLoader}; /// Contains the toggle value for each item of the enum T. pub struct EnumToggles { @@ -101,24 +101,23 @@ where toggles } - /// Set all toggles value defiend in the file. + /// Set all toggles value defiend in the yaml file. pub fn load_from_file(&mut self, filepath: &str) { - let file = std::fs::File::open(filepath).expect("Unable to open file"); - let reader = std::io::BufReader::new(file); - for line in reader.lines() { - match line { - Ok(line) => { - let parts: Vec<&str> = line.split_whitespace().collect(); - if parts.len() == 2 { - if let Ok(value) = parts[0].parse::() { - self.set_by_name(parts[1], value != 0); - } + match fs::read_to_string(filepath) { + Ok(content) => { + let docs = YamlLoader::load_from_str(&content).unwrap(); + let doc = &docs[0]; + + if let Yaml::Hash(ref h) = doc { + for (key, value) in h { + self.set_by_name( + key.as_str().unwrap_or(""), + value.as_i64().unwrap_or(0) == 1, + ); } } - Err(e) => { - error!("Error reading line: {e}"); - } } + Err(e) => println!("Error reading file: {}", e), } } @@ -170,7 +169,7 @@ where } /// Diplay all toggles and their values. -impl fmt::Display for EnumToggles +impl fmt::Debug for EnumToggles where T: strum::IntoEnumIterator + AsRef + PartialEq + 'static, { @@ -225,7 +224,7 @@ mod tests { #[test] fn display() { let toggles: EnumToggles = EnumToggles::new(); - assert_eq!(format!("{}", toggles).is_empty(), false); + assert_eq!(format!("{:?}", toggles).is_empty(), false); } #[test] @@ -235,10 +234,9 @@ mod tests { tempfile::NamedTempFile::new().expect("Unable to create temporary file"); // Write some data to the file - writeln!(temp_file, "1 Toggle1").expect("Unable to write to temporary file"); - writeln!(temp_file, "0 Toggle2").expect("Unable to write to temporary file"); - writeln!(temp_file, "0 VAR1").expect("Unable to write to temporary file"); - writeln!(temp_file, "TESTTEST").expect("Unable to write to temporary file"); + writeln!(temp_file, "Toggle1: 1").expect("Unable to write to temporary file"); + writeln!(temp_file, "Toggle2: 0").expect("Unable to write to temporary file"); + writeln!(temp_file, "VAR1: 0").expect("Unable to write to temporary file"); writeln!(temp_file, "").expect("Unable to write to temporary file"); // Get the path of the temporary file