From 7e2f56f41a89213d3ae60a069402a25b570f0cca Mon Sep 17 00:00:00 2001 From: mo8it Date: Thu, 17 Oct 2024 15:03:43 +0200 Subject: [PATCH] Use the default hasher --- Cargo.lock | 15 ++++----------- Cargo.toml | 1 - clippy.toml | 3 --- src/app_state.rs | 4 ++-- src/collections.rs | 9 --------- src/dev/check.rs | 8 ++++---- src/main.rs | 1 - 7 files changed, 10 insertions(+), 31 deletions(-) delete mode 100644 src/collections.rs diff --git a/Cargo.lock b/Cargo.lock index f89c139f..1ac56b40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -186,12 +186,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "foldhash" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" - [[package]] name = "fsevent-sys" version = "4.1.0" @@ -283,9 +277,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f" [[package]] name = "libredox" @@ -410,9 +404,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -455,7 +449,6 @@ dependencies = [ "anyhow", "clap", "crossterm", - "foldhash", "notify", "os_pipe", "rustix", diff --git a/Cargo.toml b/Cargo.toml index eb22cfee..4dbcb5fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,6 @@ include = [ anyhow = "1.0.89" clap = { version = "4.5.20", features = ["derive"] } crossterm = { version = "0.28.1", default-features = false, features = ["windows", "events"] } -foldhash = "0.1.3" notify = { version = "6.1.1", default-features = false, features = ["macos_fsevent"] } os_pipe = "1.2.1" rustlings-macros = { path = "rustlings-macros", version = "=6.3.0" } diff --git a/clippy.toml b/clippy.toml index 2a981849..afc9253a 100644 --- a/clippy.toml +++ b/clippy.toml @@ -5,9 +5,6 @@ disallowed-types = [ ] disallowed-methods = [ - # We use `foldhash` instead of the default hasher. - "std::collections::HashSet::new", - "std::collections::HashSet::with_capacity", # Inefficient. Use `.queue(…)` instead. "crossterm::style::style", # Use `thread::Builder::spawn` instead and handle the error. diff --git a/src/app_state.rs b/src/app_state.rs index 4007fbc3..5979150f 100644 --- a/src/app_state.rs +++ b/src/app_state.rs @@ -1,6 +1,7 @@ use anyhow::{bail, Context, Error, Result}; use crossterm::{cursor, terminal, QueueableCommand}; use std::{ + collections::HashSet, env, fs::{File, OpenOptions}, io::{Read, Seek, StdoutLock, Write}, @@ -16,7 +17,6 @@ use std::{ use crate::{ clear_terminal, cmd::CmdRunner, - collections::hash_set_with_capacity, embedded::EMBEDDED_FILES, exercise::{Exercise, RunnableExercise}, info_file::ExerciseInfo, @@ -146,7 +146,7 @@ impl AppState { break 'block StateFileStatus::NotRead; } - let mut done_exercises = hash_set_with_capacity(exercises.len()); + let mut done_exercises = HashSet::with_capacity(exercises.len()); for done_exercise_name in lines { if done_exercise_name.is_empty() { diff --git a/src/collections.rs b/src/collections.rs deleted file mode 100644 index 3f2841e0..00000000 --- a/src/collections.rs +++ /dev/null @@ -1,9 +0,0 @@ -use foldhash::fast::FixedState; - -/// DOS attacks aren't a concern for Rustlings. Therefore, we use `foldhash` with a fixed state. -pub type HashSet = std::collections::HashSet; - -#[inline] -pub fn hash_set_with_capacity(capacity: usize) -> HashSet { - HashSet::with_capacity_and_hasher(capacity, FixedState::default()) -} diff --git a/src/dev/check.rs b/src/dev/check.rs index 119fed5f..956c2be2 100644 --- a/src/dev/check.rs +++ b/src/dev/check.rs @@ -1,6 +1,7 @@ use anyhow::{anyhow, bail, Context, Error, Result}; use std::{ cmp::Ordering, + collections::HashSet, fs::{self, read_dir, OpenOptions}, io::{self, Read, Write}, path::{Path, PathBuf}, @@ -11,7 +12,6 @@ use std::{ use crate::{ cargo_toml::{append_bins, bins_start_end_ind, BINS_BUFFER_CAPACITY}, cmd::CmdRunner, - collections::{hash_set_with_capacity, HashSet}, exercise::{RunnableExercise, OUTPUT_CAPACITY}, info_file::{ExerciseInfo, InfoFile}, CURRENT_FORMAT_VERSION, @@ -53,8 +53,8 @@ fn check_cargo_toml( // Check the info of all exercises and return their paths in a set. fn check_info_file_exercises(info_file: &InfoFile) -> Result> { - let mut names = hash_set_with_capacity(info_file.exercises.len()); - let mut paths = hash_set_with_capacity(info_file.exercises.len()); + let mut names = HashSet::with_capacity(info_file.exercises.len()); + let mut paths = HashSet::with_capacity(info_file.exercises.len()); let mut file_buf = String::with_capacity(1 << 14); for exercise_info in &info_file.exercises { @@ -282,7 +282,7 @@ fn check_solutions( .collect::, _>>() .context("Failed to spawn a thread to check a solution")?; - let mut sol_paths = hash_set_with_capacity(info_file.exercises.len()); + let mut sol_paths = HashSet::with_capacity(info_file.exercises.len()); let mut fmt_cmd = Command::new("rustfmt"); fmt_cmd .arg("--check") diff --git a/src/main.rs b/src/main.rs index c8bcd2e5..eeb1883e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,6 @@ use self::{app_state::AppState, dev::DevCommands, info_file::InfoFile}; mod app_state; mod cargo_toml; mod cmd; -mod collections; mod dev; mod embedded; mod exercise;