#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

#2087 in Parser implementations

Download history 2/week @ 2024-09-09 20/week @ 2024-09-16 23/week @ 2024-09-23 9/week @ 2024-09-30 10/week @ 2024-10-07 27/week @ 2024-10-14 2/week @ 2024-10-21 153/week @ 2024-11-04 9/week @ 2024-11-11 19/week @ 2024-11-18 34/week @ 2024-11-25 18/week @ 2024-12-02

87 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