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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
## ByteSize
[](https://travis-ci.org/hyunsik/bytesize)
[](https://crates.io/crates/bytesize)
ByteSize is an utility for human-readable byte count representation.
[API Documentation](https://docs.rs/bytesize/)
## Usage
Add this to your Cargo.toml:
```toml
[dependencies]
bytesize = "1.0.0"
```
and this to your crate root:
```rust
extern crate bytesize;
```
## Example
### Human readable representations (SI unit and Binary unit)
```rust
#[allow(dead_code)]
fn assert_display(expected: &str, b: ByteSize) {
assert_eq!(expected, format!("{}", b));
}
#[test]
fn test_display() {
assert_display("215 B", ByteSize(215));
assert_display("215 B", ByteSize::b(215));
assert_display("1.0 KB", ByteSize::kb(1));
assert_display("301.0 KB", ByteSize::kb(301));
assert_display("419.0 MB", ByteSize::mb(419));
assert_display("518.0 GB", ByteSize::gb(518));
assert_display("815.0 TB", ByteSize::tb(815));
assert_display("609.0 PB", ByteSize::pb(609));
}
fn assert_to_string(expected: &str, b: ByteSize, si: bool) {
assert_eq!(expected.to_string(), b.to_string_as(si));
}
#[test]
fn test_to_string() {
assert_to_string("215 B", ByteSize(215), true);
assert_to_string("215 B", ByteSize(215), false);
assert_to_string("215 B", ByteSize::b(215), true);
assert_to_string("215 B", ByteSize::b(215), false);
assert_to_string("1.0 kiB", ByteSize::kib(1), true);
assert_to_string("1.0 KB", ByteSize::kib(1), false);
assert_to_string("293.9 kiB", ByteSize::kb(301), true);
assert_to_string("301.0 KB", ByteSize::kb(301), false);
assert_to_string("1.0 MiB", ByteSize::mib(1), true);
assert_to_string("1048.6 KB", ByteSize::mib(1), false);
assert_to_string("399.6 MiB", ByteSize::mb(419), true);
assert_to_string("419.0 MB", ByteSize::mb(419), false);
assert_to_string("482.4 GiB", ByteSize::gb(518), true);
assert_to_string("518.0 GB", ByteSize::gb(518), false);
assert_to_string("741.2 TiB", ByteSize::tb(815), true);
assert_to_string("815.0 TB", ByteSize::tb(815), false);
assert_to_string("540.9 PiB", ByteSize::pb(609), true);
assert_to_string("609.0 PB", ByteSize::pb(609), false);
}
```
### Arithmetic operations
```rust
extern crate bytesize;
use bytesize::ByteSize;
fn byte_arithmetic_operator() {
let x = ByteSize::mb(1);
let y = ByteSize::kb(100);
let plus = x + y;
print!("{}", plus);
let minus = ByteSize::tb(100) + ByteSize::gb(4);
print!("{}", minus);
}
```
|