Embed static files into Rust binaries during release builds.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
michael 2b2ef89216
Merge pull request #4 from remexre/master
2 weeks ago
packer_derive ... 2 weeks ago
src Doc fixes, no longer uploads kermit to crates.io... 2 weeks ago
static initial 5 months ago
tests packer trait 2 weeks ago
.gitignore initial 5 months ago
.travis.yml im an idiot 2 weeks ago
Cargo.toml Doc fixes, no longer uploads kermit to crates.io... 2 weeks ago
LICENSE license' 2 weeks ago
README.md ... 2 weeks ago

README.md

Packer

dependency status

NOTE This project is based on the original rust-embed. I made enough modifications to it that I decided to just publish it in a separate repository.

NOTE This project requires a Rust 2018 (Rust 1.31+) compiler.

packer is a library that helps you pack static files into binaries using macro magic. Here’s how it’s done:

Step 1: Include

Include the crate in your Cargo.toml:

[dependencies]
packer = "0.3"

Step 2: Derive

Start deriving Packer from your structs. You need to provide a folder attribute to indicate the folder from which it should be pulling. Paths are relative to the crate root.

use packer::Packer;
#[derive(Packer)]
#[folder = "static"]
struct Assets;

Step 3: Use it!

You can now access any file using the get function:

use packer::Packer;
let data: Option<&'static [u8]> = Assets::get("kermit.jpg");

You may also choose to list all the files that have been stored.

use packer::Packer;
let files /*: impl Iterator<Item = &'static str>*/ = Assets::list();

(See the documentation for the Packer trait for the full listing of methods.)

When you build in dev mode, it will fetch off your filesystem as usual, but when you build with --release, it will pack the assets into your binary!

Future Work

  • Possibly add options for excluding files?

Contact

Author: Michael Zhang, Nathan Ringo

License: MIT