summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-10-17 15:03:43 +0200
committermo8it <mo8it@proton.me>2024-10-17 15:03:43 +0200
commit7e2f56f41a89213d3ae60a069402a25b570f0cca (patch)
treed10a0d1f54311edda5bea57644f929152e8e7dd2
parente90f5f03f3da639bf3157aec12ebf0cec62ac7ae (diff)
Use the default hasher
-rw-r--r--Cargo.lock15
-rw-r--r--Cargo.toml1
-rw-r--r--clippy.toml3
-rw-r--r--src/app_state.rs4
-rw-r--r--src/collections.rs9
-rw-r--r--src/dev/check.rs8
-rw-r--r--src/main.rs1
7 files changed, 10 insertions, 31 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f89c139..1ac56b4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -187,12 +187,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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 eb22cfe..4dbcb5f 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 2a98184..afc9253 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 4007fbc..5979150 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 3f2841e..0000000
--- 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<T> = std::collections::HashSet<T, FixedState>;
-
-#[inline]
-pub fn hash_set_with_capacity<T>(capacity: usize) -> HashSet<T> {
- HashSet::with_capacity_and_hasher(capacity, FixedState::default())
-}
diff --git a/src/dev/check.rs b/src/dev/check.rs
index 119fed5..956c2be 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<HashSet<PathBuf>> {
- 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::<Result<Vec<_>, _>>()
.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 c8bcd2e..eeb1883 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;