include-zstd-derive 0.1.0

Procedural macro implementation for include-zstd compile-time compression macros.
Documentation

include-zstd

version status

English | 简体中文

include-zstd is a Rust macro library that compresses text or binary data at compile time and decompresses it on demand at runtime, returning either &'static str or &'static [u8].

Usage

1. Add dependency

Run:

cargo add include-zstd

2. Common macros

  • include_zstd::str!("..."): inline string, returns &'static str
  • include_zstd::bytes!(b"..."): inline byte string, returns &'static [u8]
  • include_zstd::file_str!("path"): reads a file and returns &'static str as UTF-8
  • include_zstd::file_bytes!("path"): reads a file and returns &'static [u8]

Path resolution for include_zstd::file_str! / include_zstd::file_bytes! is the same as include_str! / include_bytes!: relative paths are resolved from the directory of the source file where the macro is invoked.

4. Example

fn main() {
    let msg: &'static str = include_zstd::str!("hello include-zstd");
    let raw: &'static [u8] = include_zstd::bytes!(b"\x00\x01\x02\x03");

    let text: &'static str = include_zstd::file_str!("data/sample.txt");
    let bytes: &'static [u8] = include_zstd::file_bytes!("data/sample.bin");

    println!("msg={msg}, text_len={}, bytes_len={}, raw_len={}", text.len(), bytes.len(), raw.len());
}