#byte-size #byte #size #human #serde #units

no-std huby

A simple crate (supporting serde) to handle byte sizes as human

7 releases

0.2.0 Nov 5, 2024
0.1.5 Jul 12, 2024

#1342 in Encoding

Download history 32/week @ 2024-07-28 4/week @ 2024-08-04 2/week @ 2024-08-11 1/week @ 2024-08-18 2/week @ 2024-09-08 19/week @ 2024-09-15 21/week @ 2024-09-22 12/week @ 2024-09-29 10/week @ 2024-10-06 25/week @ 2024-10-13 4/week @ 2024-10-20 146/week @ 2024-11-03 16/week @ 2024-11-10

168 downloads per month
Used in firo

GPL-3.0 license

20KB
382 lines

GitHub Actions Workflow Status Crates.io Version docs.rs

Human Bytes

huby is a library for easily handling byte sizes.

Crate features

Default

  • std: Enable feature depending on the Rust standard library

Optional

  • serde: Enable serialization/deserialization via serde.

Examples

Basics

use huby::ByteSize;

assert_eq!("42.42 KB".parse::<ByteSize>().unwrap(), ByteSize::from_kb_f64(42.42));

Use with serde

use huby::ByteSize;
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
pub struct Logger {
    path: String,
    max_size: ByteSize,
}

let logger = Logger {
    path: "some_path".into(),
    max_size: ByteSize::from_gb(1),
};

// Serialize
let j = serde_json::to_string(&logger).unwrap();
assert_eq!(r#"{"path":"some_path","max_size":"1GB"}"#, j);

// Deserialize
let l: Logger = serde_json::from_str(&j).unwrap();
assert_eq!(l.max_size, ByteSize::from_mb(1024));

Dependencies

~165KB