keechain_core/util/
format.rs

1// Copyright (c) 2022 Yuki Kishimoto
2// Distributed under the MIT software license
3
4pub fn number(num: usize) -> String {
5    let mut number: String = num.to_string();
6
7    if number.len() > 3 {
8        let reversed: String = number.chars().rev().collect();
9        number.clear();
10        for (index, char) in reversed.chars().into_iter().enumerate() {
11            if index != 0 && index % 3 == 0 {
12                number.push(' ');
13            }
14            number.push(char);
15        }
16        number = number.chars().rev().collect();
17    }
18
19    number
20}
21
22#[cfg(test)]
23mod test {
24    use super::*;
25
26    #[test]
27    fn format_number() {
28        assert_eq!(number(100), "100".to_string());
29        assert_eq!(number(1000), "1 000".to_string());
30        assert_eq!(number(10000), "10 000".to_string());
31        assert_eq!(number(100000), "100 000".to_string());
32        assert_eq!(number(1000000), "1 000 000".to_string());
33        assert_eq!(number(1000000000), "1 000 000 000".to_string());
34    }
35}