diff --git a/Cargo.lock b/Cargo.lock index 5fc12bb5..809de233 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,6 +49,15 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +dependencies = [ + "nodrop", +] + [[package]] name = "arrayvec" version = "0.5.2" @@ -97,7 +106,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "constant_time_eq", ] @@ -728,6 +737,7 @@ dependencies = [ "lazy_static", "linked-hash-map", "lock_api", + "num-format", "num_cpus", "openssl", "pbr", @@ -1109,6 +1119,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + [[package]] name = "num-derive" version = "0.3.3" @@ -1120,6 +1136,16 @@ dependencies = [ "syn", ] +[[package]] +name = "num-format" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +dependencies = [ + "arrayvec 0.4.12", + "itoa 0.4.8", +] + [[package]] name = "num-integer" version = "0.1.45" diff --git a/Cargo.toml b/Cargo.toml index fa6d4d7e..388881a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,6 +37,7 @@ bytesize = "1.*" hyper = "0.14.*" lock_api = "0.4.*" crossbeam-utils = "0.8.*" +num-format = "*" [build-dependencies] static_vcruntime = "2.*" diff --git a/src/afterfact.rs b/src/afterfact.rs index 6752faa1..ee22a6e9 100644 --- a/src/afterfact.rs +++ b/src/afterfact.rs @@ -14,6 +14,7 @@ use lazy_static::lazy_static; use linked_hash_map::LinkedHashMap; use hashbrown::{HashMap, HashSet}; +use num_format::{ToFormattedString, Locale}; use std::cmp::min; use std::error::Error; @@ -334,7 +335,7 @@ fn emit_csv( write_color_buffer( &disp_wtr, get_writable_color(None), - &format!("Total events: {}", all_record_cnt), + &format!("Total events: {}", all_record_cnt.to_formatted_string(&Locale::en)), true, ) .ok(); @@ -343,7 +344,7 @@ fn emit_csv( get_writable_color(None), &format!( "Data reduction: {} events ({:.2}%)", - reducted_record_cnt, reducted_percent + reducted_record_cnt.to_formatted_string(&Locale::en), reducted_percent ), true, ) @@ -440,7 +441,7 @@ fn _print_unique_results( "{} {}: {}", head_word, tail_word, - counts_by_level.iter().sum::(), + counts_by_level.iter().sum::().to_formatted_string(&Locale::en), ), true, ) @@ -452,7 +453,7 @@ fn _print_unique_results( } let output_raw_str = format!( "{} {} {}: {}", - head_word, level_name, tail_word, counts_by_level[i] + head_word, level_name, tail_word, counts_by_level[i].to_formatted_string(&Locale::en) ); write_color_buffer( &BufferWriter::stdout(ColorChoice::Always), @@ -482,7 +483,7 @@ fn _print_detection_summary_by_date( for (date, cnt) in detections_by_day { if cnt > &tmp_cnt { exist_max_data = true; - max_detect_str = format!("{} ({})", date, cnt); + max_detect_str = format!("{} ({})", date, cnt.to_formatted_string(&Locale::en)); tmp_cnt = *cnt; } } @@ -527,7 +528,7 @@ fn _print_detection_summary_by_computer( sorted_detections.sort_by(|a, b| (-a.1).cmp(&(-b.1))); for x in sorted_detections.iter().take(5) { - result_vec.push(format!("{} ({})", x.0, x.1)); + result_vec.push(format!("{} ({})", x.0, x.1.to_formatted_string(&Locale::en))); } let result_str = if result_vec.is_empty() { "n/a".to_string()