1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//! A Rust library prividing pretty hex dump.
//! 
//! A `simple_*` way renders one-line hex dump, and a `pretty_*` wayrenders 
//! columned multy-line hex dump with addresing and ASCII representation.
//! 
//! ## Example of `simple_hex*`
//! ```
//! use pretty_hex::*;
//! 
//! let v = vec![222, 173, 190, 239, 202, 254, 32, 24];
//! assert_eq!(simple_hex(&v), format!("{}", v.hex_dump()));
//! 
//! println!("{}", v.hex_dump());
//! ```
//! Output: 
//! 
//! ```text
//! de ad be ef  ca fe 20 18
//! ```
//! ## Example of `pretty_hex*
//! ```
//! use pretty_hex::*;
//! 
//! let v: &[u8] = &random::<[u8;30]>();
//! assert_eq!(pretty_hex(&v), format!("{:?}", v.hex_dump()));
//! 
//! println!("{:?}", v.hex_dump());
//! ```
//! Output: 
//! 
//! ```text
//! Length: 30 (0x1e) bytes
//! 0000:   6b 4e 1a c3  af 03 d2 1e  7e 73 ba c8  bd 84 0f 83   kN......~s......
//! 0010:   89 d5 cf 90  23 67 4b 48  db b1 bc 35  bf ee         ....#gKH...5..
//! ```

mod pretty_hex;
pub use pretty_hex::*;

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn test_simple() {
        let bytes: Vec<u8> = (0..16).collect();
        let simple = "00 01 02 03  04 05 06 07  08 09 0a 0b  0c 0d 0e 0f";
        assert_eq!(simple, simple_hex(&bytes));
        assert_eq!(simple, format!("{}", bytes.hex_dump()));
        let s = "string";
        assert_eq!("73 74 72 69  6e 67", simple_hex(&s));
        assert!(simple_hex(&vec![]).is_empty());
    }

    #[test]
    fn test_pretty() {
        let bytes: Vec<u8> = (0..255).collect();
        println!("{:?}", bytes.hex_dump());
    }
}