@@ -11,7 +11,7 @@ use serde::Deserialize;
1111use std:: collections:: HashMap ;
1212use std:: fs;
1313use std:: io:: Write ;
14- use std:: path:: PathBuf ;
14+ use std:: path:: { Path , PathBuf } ;
1515use std:: process:: { Command , Stdio } ;
1616use std:: time:: Instant ;
1717
@@ -65,17 +65,17 @@ struct JsParserOutput {
6565 entries : Vec < CompareEntry > ,
6666}
6767
68- /// Convert a berry Entry to CompareEntry
68+ /// Convert a berry Entry to ` CompareEntry`
6969fn entry_to_compare ( entry : & Entry < ' _ > ) -> CompareEntry {
7070 let mut descriptors: Vec < String > = entry
7171 . descriptors
7272 . iter ( )
7373 . map ( |d| {
7474 let ident = d. ident ( ) ;
75- let name = match ident. scope ( ) {
76- Some ( scope ) => format ! ( "{}/{}" , scope , ident. name( ) ) ,
77- None => ident. name ( ) . to_string ( ) ,
78- } ;
75+ let name = ident. scope ( ) . map_or_else (
76+ || ident. name ( ) . to_string ( ) ,
77+ |scope| format ! ( "{}/{}" , scope , ident. name( ) ) ,
78+ ) ;
7979 format ! ( "{}@{}" , name, d. range( ) )
8080 } )
8181 . collect ( ) ;
@@ -86,10 +86,10 @@ fn entry_to_compare(entry: &Entry<'_>) -> CompareEntry {
8686 . dependencies
8787 . iter ( )
8888 . map ( |( ident, desc) | {
89- let name = match ident. scope ( ) {
90- Some ( scope ) => format ! ( "{}/{}" , scope , ident. name( ) ) ,
91- None => ident. name ( ) . to_string ( ) ,
92- } ;
89+ let name = ident. scope ( ) . map_or_else (
90+ || ident. name ( ) . to_string ( ) ,
91+ |scope| format ! ( "{}/{}" , scope , ident. name( ) ) ,
92+ ) ;
9393 ( name, desc. range ( ) . to_string ( ) )
9494 } )
9595 . collect ( ) ;
@@ -99,10 +99,10 @@ fn entry_to_compare(entry: &Entry<'_>) -> CompareEntry {
9999 . peer_dependencies
100100 . iter ( )
101101 . map ( |( ident, desc) | {
102- let name = match ident. scope ( ) {
103- Some ( scope ) => format ! ( "{}/{}" , scope , ident. name( ) ) ,
104- None => ident. name ( ) . to_string ( ) ,
105- } ;
102+ let name = ident. scope ( ) . map_or_else (
103+ || ident. name ( ) . to_string ( ) ,
104+ |scope| format ! ( "{}/{}" , scope , ident. name( ) ) ,
105+ ) ;
106106 ( name, desc. range ( ) . to_string ( ) )
107107 } )
108108 . collect ( ) ;
@@ -174,10 +174,10 @@ fn entry_to_compare(entry: &Entry<'_>) -> CompareEntry {
174174}
175175
176176/// Generate a Node.js script to parse the given lockfile
177- fn generate_js_script ( fixture_path : & PathBuf ) -> String {
177+ fn generate_js_script ( fixture_path : & Path ) -> String {
178178 let path_str = fixture_path. display ( ) ;
179179 format ! (
180- r# "const fs = require('fs');
180+ r"const fs = require('fs');
181181
182182let parseSyml;
183183try {{
@@ -266,7 +266,7 @@ for (const [key, value] of Object.entries(parsed)) {{
266266}}
267267
268268console.log(JSON.stringify({{ entries }}));
269- "#
269+ "
270270 )
271271}
272272
@@ -282,7 +282,7 @@ fn get_npm_global_prefix() -> Option<String> {
282282 }
283283}
284284
285- fn run_js_parser ( fixture_path : & PathBuf ) -> Result < JsParserOutput , String > {
285+ fn run_js_parser ( fixture_path : & Path ) -> Result < JsParserOutput , String > {
286286 let script = generate_js_script ( fixture_path) ;
287287 let script_path = std:: env:: temp_dir ( ) . join ( "berry-compare-parser.js" ) ;
288288 fs:: write ( & script_path, & script) . map_err ( |e| format ! ( "Failed to write temp script: {e}" ) ) ?;
@@ -295,7 +295,7 @@ fn run_js_parser(fixture_path: &PathBuf) -> Result<JsParserOutput, String> {
295295
296296 // Set NODE_PATH to include global node_modules
297297 if let Some ( prefix) = get_npm_global_prefix ( ) {
298- let node_path = format ! ( "{}/lib/node_modules" , prefix ) ;
298+ let node_path = format ! ( "{prefix }/lib/node_modules" ) ;
299299 cmd. env ( "NODE_PATH" , node_path) ;
300300 }
301301
@@ -331,7 +331,7 @@ fn time_rust_parser(contents: &str, iterations: usize) -> (Vec<Entry<'_>>, f64)
331331 ( entries, avg_time)
332332}
333333
334- fn time_js_parser ( fixture_path : & PathBuf , iterations : usize ) -> ( JsParserOutput , f64 ) {
334+ fn time_js_parser ( fixture_path : & Path , iterations : usize ) -> ( JsParserOutput , f64 ) {
335335 let mut total_time = 0.0 ;
336336 let mut output = None ;
337337
@@ -354,6 +354,7 @@ struct Difference {
354354 js_value : String ,
355355}
356356
357+ #[ allow( clippy:: too_many_lines) ]
357358fn compare_entries ( rust_entries : & [ CompareEntry ] , js_entries : & [ CompareEntry ] ) -> Vec < Difference > {
358359 let mut differences = Vec :: new ( ) ;
359360
@@ -424,15 +425,15 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
424425 if rust_range != js_range {
425426 differences. push ( Difference {
426427 resolution : ( * resolution) . to_string ( ) ,
427- field : format ! ( "dependencies[{}]" , dep_name ) ,
428+ field : format ! ( "dependencies[{dep_name }]" ) ,
428429 rust_value : rust_range. clone ( ) ,
429430 js_value : js_range. clone ( ) ,
430431 } ) ;
431432 }
432433 } else {
433434 differences. push ( Difference {
434435 resolution : ( * resolution) . to_string ( ) ,
435- field : format ! ( "dependencies[{}]" , dep_name ) ,
436+ field : format ! ( "dependencies[{dep_name }]" ) ,
436437 rust_value : rust_range. clone ( ) ,
437438 js_value : "(missing)" . to_string ( ) ,
438439 } ) ;
@@ -443,7 +444,7 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
443444 if !rust_entry. dependencies . contains_key ( dep_name) {
444445 differences. push ( Difference {
445446 resolution : ( * resolution) . to_string ( ) ,
446- field : format ! ( "dependencies[{}]" , dep_name ) ,
447+ field : format ! ( "dependencies[{dep_name }]" ) ,
447448 rust_value : "(missing)" . to_string ( ) ,
448449 js_value : js_range. clone ( ) ,
449450 } ) ;
@@ -456,15 +457,15 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
456457 if rust_range != js_range {
457458 differences. push ( Difference {
458459 resolution : ( * resolution) . to_string ( ) ,
459- field : format ! ( "peerDependencies[{}]" , dep_name ) ,
460+ field : format ! ( "peerDependencies[{dep_name }]" ) ,
460461 rust_value : rust_range. clone ( ) ,
461462 js_value : js_range. clone ( ) ,
462463 } ) ;
463464 }
464465 } else {
465466 differences. push ( Difference {
466467 resolution : ( * resolution) . to_string ( ) ,
467- field : format ! ( "peerDependencies[{}]" , dep_name ) ,
468+ field : format ! ( "peerDependencies[{dep_name }]" ) ,
468469 rust_value : rust_range. clone ( ) ,
469470 js_value : "(missing)" . to_string ( ) ,
470471 } ) ;
@@ -475,7 +476,7 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
475476 if !rust_entry. peer_dependencies . contains_key ( dep_name) {
476477 differences. push ( Difference {
477478 resolution : ( * resolution) . to_string ( ) ,
478- field : format ! ( "peerDependencies[{}]" , dep_name ) ,
479+ field : format ! ( "peerDependencies[{dep_name }]" ) ,
479480 rust_value : "(missing)" . to_string ( ) ,
480481 js_value : js_range. clone ( ) ,
481482 } ) ;
@@ -488,15 +489,15 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
488489 if rust_path != js_path {
489490 differences. push ( Difference {
490491 resolution : ( * resolution) . to_string ( ) ,
491- field : format ! ( "bin[{}]" , bin_name ) ,
492+ field : format ! ( "bin[{bin_name }]" ) ,
492493 rust_value : rust_path. clone ( ) ,
493494 js_value : js_path. clone ( ) ,
494495 } ) ;
495496 }
496497 } else {
497498 differences. push ( Difference {
498499 resolution : ( * resolution) . to_string ( ) ,
499- field : format ! ( "bin[{}]" , bin_name ) ,
500+ field : format ! ( "bin[{bin_name }]" ) ,
500501 rust_value : rust_path. clone ( ) ,
501502 js_value : "(missing)" . to_string ( ) ,
502503 } ) ;
@@ -507,7 +508,7 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
507508 if !rust_entry. bin . contains_key ( bin_name) {
508509 differences. push ( Difference {
509510 resolution : ( * resolution) . to_string ( ) ,
510- field : format ! ( "bin[{}]" , bin_name ) ,
511+ field : format ! ( "bin[{bin_name }]" ) ,
511512 rust_value : "(missing)" . to_string ( ) ,
512513 js_value : js_path. clone ( ) ,
513514 } ) ;
@@ -598,7 +599,7 @@ fn compare_entries(rust_entries: &[CompareEntry], js_entries: &[CompareEntry]) -
598599 }
599600
600601 // Check for entries in JS but not in Rust
601- for ( resolution, _ ) in & js_by_res {
602+ for resolution in js_by_res. keys ( ) {
602603 if !rust_by_res. contains_key ( resolution) {
603604 differences. push ( Difference {
604605 resolution : ( * resolution) . to_string ( ) ,
@@ -616,15 +617,19 @@ fn main() {
616617 let args = Args :: parse ( ) ;
617618
618619 let fixture_path = args. fixture . canonicalize ( ) . unwrap_or_else ( |e| {
619- eprintln ! ( "Error: Cannot find fixture file {:?}: {}" , args. fixture, e) ;
620+ eprintln ! (
621+ "Error: Cannot find fixture file {}: {}" ,
622+ args. fixture. display( ) ,
623+ e
624+ ) ;
620625 std:: process:: exit ( 1 ) ;
621626 } ) ;
622627
623628 let contents = load_fixture_from_path ( & fixture_path) ;
624629 let file_size = contents. len ( ) ;
625630
626631 println ! ( "Comparing parsers for: {}" , fixture_path. display( ) ) ;
627- println ! ( "File size: {} bytes" , file_size ) ;
632+ println ! ( "File size: {file_size } bytes" ) ;
628633 println ! ( "Iterations: {}" , args. iterations) ;
629634 println ! ( ) ;
630635
@@ -645,10 +650,10 @@ fn main() {
645650
646651 println ! ( ) ;
647652 println ! ( "=== Performance ===" ) ;
648- println ! ( "Rust: {:.3} ms avg" , rust_time ) ;
649- println ! ( "JS: {:.3} ms avg" , js_time ) ;
653+ println ! ( "Rust: {rust_time :.3} ms avg" ) ;
654+ println ! ( "JS: {js_time :.3} ms avg" ) ;
650655 let speedup = js_time / rust_time;
651- println ! ( "Speedup: {:.2}x" , speedup ) ;
656+ println ! ( "Speedup: {speedup :.2}x" ) ;
652657
653658 println ! ( ) ;
654659 println ! ( "=== Entry Counts ===" ) ;
0 commit comments