diff --git a/src/main/rust/src/implementations/flare_flo.rs b/src/main/rust/src/implementations/flare_flo.rs index b2f12ef..f2f7b60 100644 --- a/src/main/rust/src/implementations/flare_flo.rs +++ b/src/main/rust/src/implementations/flare_flo.rs @@ -105,7 +105,7 @@ impl Citymap { } } pub fn into_key_values(self) -> Vec<(String, City)> { - self.map.into_iter().map(|(_, s)| s).collect() + self.map.into_values().collect() } pub fn merge_with(&mut self, rhs: Self) { for (k, v) in rhs.map.into_iter() { @@ -125,7 +125,7 @@ pub fn run() { let start = Instant::now(); let input = "../../../measurements.txt"; - let results = if args.find(|e| e == "st").is_some() { + let results = if args.any(|e| e == "st") { citymap_single_thread(input) } else { citymap_multi_threaded(input) @@ -159,7 +159,6 @@ fn citymap_multi_threaded(path: &str) -> Citymap { threads.push(citymap_thread(path.to_owned(), range, i, sender.clone())); } let mut ranges = (0..cpus) - .into_iter() .map(|_| receiver.recv().unwrap()) .collect::>(); ranges.sort_unstable_by_key(|e| e.start); @@ -171,7 +170,7 @@ fn citymap_multi_threaded(path: &str) -> Citymap { }), "Ranges overlap or have gaps: {ranges:?}" ); - let results = threads + threads .into_iter() .map(|e| e.join().unwrap()) //.map(|e|dbg!(e)) @@ -179,8 +178,7 @@ fn citymap_multi_threaded(path: &str) -> Citymap { left.merge_with(right); left }) - .unwrap(); - results + .unwrap() } fn citymap_thread( @@ -204,7 +202,7 @@ fn citymap_thread( head.truncate(len); for (i, &pos) in head.iter().enumerate() { - if pos == '\n' as u8 { + if pos == b'\n' { range.start += i as u64; break; } @@ -218,7 +216,7 @@ fn citymap_thread( head.truncate(len); for (i, &pos) in head.iter().enumerate() { - if pos == '\n' as u8 { + if pos == b'\n' { range.end += i as u64; break; } @@ -249,7 +247,7 @@ fn citymap_naive(input: &mut impl BufRead) -> Citymap { } // Skip over just newline strings that get created by the alignment process - if buf == &[b'\n'] { + if buf == b"\n" { continue; } diff --git a/src/main/rust/src/implementations/libraries.rs b/src/main/rust/src/implementations/libraries.rs index b30b06e..f33b3e7 100644 --- a/src/main/rust/src/implementations/libraries.rs +++ b/src/main/rust/src/implementations/libraries.rs @@ -14,7 +14,7 @@ pub fn run() { let file = File::open(FILE_PATH).expect("File measurements.txt not found"); let mmap = unsafe { MmapOptions::new().map(&file).unwrap() }; let file_length = mmap.len(); - let hasher = FxBuildHasher::default(); + let hasher = FxBuildHasher; let mut stations: HashMap = HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher); let (tx, rx) = mpsc::channel(); @@ -44,7 +44,7 @@ pub fn run() { let mut t_stations: HashMap = HashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher); for line in mmap_slice.split(|&byte| byte == b'\n') { - if line.len() == 0 { + if line.is_empty() { break; } let (station, temp) = line.rsplit_once(|&byte| byte == b';').unwrap(); diff --git a/src/main/rust/src/implementations/multi_threaded_structured.rs b/src/main/rust/src/implementations/multi_threaded_structured.rs index f6f43db..2fb26eb 100644 --- a/src/main/rust/src/implementations/multi_threaded_structured.rs +++ b/src/main/rust/src/implementations/multi_threaded_structured.rs @@ -16,7 +16,7 @@ pub fn run() { let file = File::open(FILE_PATH).expect("File structured_measurements.txt not found"); let mmap = unsafe { MmapOptions::new().map(&file).unwrap() }; let file_length = mmap.len(); - let hasher = FxBuildHasher::default(); + let hasher = FxBuildHasher; let mut stations: FxHashMap = FxHashMap::with_capacity_and_hasher(DEFAULT_HASHMAP_LENGTH, hasher); let (tx, rx) = mpsc::channel(); diff --git a/src/main/rust/src/implementations/phcs.rs b/src/main/rust/src/implementations/phcs.rs index dd5eca6..a244f7a 100644 --- a/src/main/rust/src/implementations/phcs.rs +++ b/src/main/rust/src/implementations/phcs.rs @@ -115,7 +115,7 @@ fn merge_hashmaps<'a>( } /// Parses a chunk of the input as StationData values. -fn process_chunk<'a>(current_chunk_slice: &'a [u8]) -> HashMap<&'a [u8], StationData> { +fn process_chunk(current_chunk_slice: &[u8]) -> HashMap<&[u8], StationData> { let mut station_map: HashMap<&[u8], StationData> = HashMap::with_capacity(MAX_STATIONS); let mut start = 0; while let Some(end) = current_chunk_slice[start..] @@ -187,7 +187,7 @@ fn write_output_to_stdout(station_map: HashMap<&[u8], StationData>) -> io::Resul pub fn run() -> io::Result<()> { // won't accept non-utf-8 args let args: Vec = env::args().collect(); - let file_name = match args.get(2).clone() { + let file_name = match args.get(2) { Some(fname) => fname, None => "../../../measurements.txt", }; diff --git a/src/main/rust/src/implementations/reference_impl.rs b/src/main/rust/src/implementations/reference_impl.rs index bd2b1e0..4ca1090 100644 --- a/src/main/rust/src/implementations/reference_impl.rs +++ b/src/main/rust/src/implementations/reference_impl.rs @@ -50,7 +50,7 @@ impl State { fn make_map<'a>(i: impl Iterator) -> HashMap<&'a BStr, State> { let mut state: HashMap<&'a BStr, State> = Default::default(); for line in i { - let (name, value) = line.split_once_str(&[b';']).unwrap(); + let (name, value) = line.split_once_str(b";").unwrap(); let value = fast_float::parse(value).unwrap(); state.entry(name.into()).or_default().update(value); } @@ -58,7 +58,7 @@ fn make_map<'a>(i: impl Iterator) -> HashMap<&'a BStr, State> { } fn solve_for_part((start, end): (usize, usize), mem: &[u8]) -> HashMap<&BStr, State> { - make_map((&mem[start..end]).lines()) + make_map((mem[start..end]).lines()) } fn merge<'a>(a: &mut HashMap<&'a BStr, State>, b: &HashMap<&'a BStr, State>) { @@ -70,7 +70,7 @@ fn merge<'a>(a: &mut HashMap<&'a BStr, State>, b: &HashMap<&'a BStr, State>) { pub fn run() { let now = Instant::now(); let cores: usize = std::thread::available_parallelism().unwrap().into(); - let path = match std::env::args().skip(1).next() { + let path = match std::env::args().nth(1) { Some(path) => path, None => "../../../measurements.txt".to_owned(), }; @@ -104,7 +104,7 @@ pub fn run() { }); let mut all: Vec<_> = state.into_iter().collect(); - all.sort_unstable_by(|a, b| a.0.cmp(&b.0)); + all.sort_unstable_by(|a, b| a.0.cmp(b.0)); #[cfg(feature = "json")] { print!("[");