Skip to content

lthiery/humanbyte

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Continuous Integration Crates.io Version

HumanByte

HumanByte is a procedural macro crate for deriving HumanByte functions for new types of the form NewType(u64). It is inspired by the bytesize crate (which is replicated here by our example [bytescale] crate).

It provides human-friendly way of constructing and displaying the type with byte units.

Usage

Add this to your Cargo.toml:

with serde support

[dependencies]
humanbyte = { version = "0.1", features = ["serde"] }

without serde support

[dependencies]
humanbyte = { version = "0.1" }

no_std compatible

[dependencies]
humanbyte = { version = "0.1", no-default-features = true }

Define your new type and derive HumanByte for it. This will derive all the necessary functions for your new type. You can then use it like this:

use humanbyte_derive::HumanByte;

#[derive(HumanByte)]
pub struct NewType(u64);

fn main() {
    let size = NewType::kib(1);
    assert_eq!(size.to_string(), "1.0 KiB");
}

See the documentation for bytescale to see more examples of what you can do with the HumanByte new type.

In addition, if you only want some of the HumanByte functions derived, you can use any of the following derives in an a la carte fashion:

  • HumanByteConstructor
  • HumanByteDisplay
  • HumanByteParse
  • HumanByteOps
  • HumanByteFromStr
  • HumanByteSerde (requires the serde feature)

About

Crates for making it easy to add byte size related properties to a new type

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%