12 releases (2 stable)

1.0.1 May 22, 2020
1.0.0 Jun 28, 2018
0.2.4 May 8, 2018
0.2.0 Mar 24, 2018
0.0.1 Apr 19, 2015

#1 in Value formatting

Download history 12673/week @ 2020-03-16 15003/week @ 2020-03-23 18495/week @ 2020-03-30 16377/week @ 2020-04-06 17891/week @ 2020-04-13 18482/week @ 2020-04-20 18118/week @ 2020-04-27 19127/week @ 2020-05-04 18385/week @ 2020-05-11 15912/week @ 2020-05-18 17897/week @ 2020-05-25 18241/week @ 2020-06-01 19973/week @ 2020-06-08 20072/week @ 2020-06-15 16658/week @ 2020-06-22 14839/week @ 2020-06-29

67,387 downloads per month
Used in 99 crates (33 directly)

Apache-2.0

14KB
268 lines

ByteSize

Build Status Crates.io Version

ByteSize is an utility for human-readable byte count representation.

API Documentation

Usage

Add this to your Cargo.toml:

[dependencies]
bytesize = "1.0.0"

and this to your crate root:

extern crate bytesize;

Example

Human readable representations (SI unit and Binary unit)

#[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

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);
}

Dependencies

~185KB