10 releases

0.3.0 Dec 17, 2021
0.2.2 Mar 8, 2021
0.2.0 Feb 8, 2021
0.1.5 Feb 6, 2021
0.1.1 Jun 10, 2020

#223 in Procedural macros

Download history 5257/week @ 2025-09-21 2932/week @ 2025-09-28 3426/week @ 2025-10-05 4489/week @ 2025-10-12 4828/week @ 2025-10-19 3857/week @ 2025-10-26 5525/week @ 2025-11-02 6295/week @ 2025-11-09 4438/week @ 2025-11-16 4797/week @ 2025-11-23 6358/week @ 2025-11-30 6154/week @ 2025-12-07 5525/week @ 2025-12-14 1410/week @ 2025-12-21 1455/week @ 2025-12-28 3094/week @ 2026-01-04

11,815 downloads per month
Used in 14 crates (11 directly)

Custom license

14KB
173 lines

Format-bytes

This crate exposes a procedural macro that allows you to format bytestrings. For more background on why you would want to do that, read this article.

Usage

Add this to your Cargo.toml:

[dependencies]
format-bytes = "0.2"

then use the macro like so:

use format_bytes::format_bytes;

fn main() {
    assert_eq!(
        format_bytes!(b"look at those {} bytes", &[0u8, 1, 2]),
        b"look at those \x00\x01\x02 bytes"
    );
}

See more examples of how it works on the documentation of format_bytes! itself.

Missing features

  • Named arguments, but they should be added in a future version
  • Python-like "f-string" functionality is not planned because of its more complex implementation and limited actual benefit
  • format!-like padding helpers: if the need manifests itself, they might appear
  • #[no_std] support

Why not 1.0?

Not until named arguments have landed and the macro gets a bit of mileage (it will be used in Mercurial).

Dependencies

~1.5MB
~39K SLoC