#assets #memory #packaging #dead #data #file

rbfs

用于打包资源的简单内存文件系统

8 个版本

0.1.7 2022 年 12 月 7 日
0.1.6 2022 年 12 月 7 日

#726文件系统

每月 22 次下载

GPL-3.0 许可证

16KB
116

Rust 构建时文件系统

Crates.io Docs.rs

RBFS 是一个用于在内存中创建虚拟文件系统的简单接口。一旦填充,可能在您的 build.rs 中,RBFS 会生成 Rust 源代码,并将其链接到您的主 Rust 程序中。在运行时,您可以访问您在 RBFS 代码中放入的任何文件。

----------------                    --------------------
|   build.rs   | --- generates ---> |   resources.rs   |
----------------                    --------------------

Figure 1: Program can now access the files packed into RBFS in the build script by including the
resources.rs file.

例如,在游戏中,您可能想要打包图像数据、配置文件、音频等...时,它非常有用。

用法

将其包含在您的 Cargo.toml 清单中。以下是一个基本示例。

// Create the filesystem.
let fs = FileSystem::new();

// Create a path to a virtual location in the filesystem, representing images..
let mut image_directory = fs.get_base_path();
image_directory.push("assets");
image_directory.push("imgs");

// Refering to an icon.png, which will be included via include_bytes! at preprocess time.
// If you want the file to be loaded as a string, change the true to a false to denote
// it's existing as being a binary file.
let icon = fs.add_file(PathBuf::from("icon.png"), &image_directory, false, true);

// If you want to make RBFS output a different filename than supplied, do the following:
let config = fs.add_file(PathBuf::from("matt.conf"), &PathBuf::from("movie.conf"), true, true);

// Generate the Rust code.
let code = fs.code();

let resources_rs = File::create(concat!(env!("CARGO_MANIFEST_DIR"), "/src/resources.rs")).unwrap();
writeln!(resources_rs, "{}", code).unwrap();

作者

由 Milo Banks 制作 🫀。

依赖项