Rust Embed 使用指南

Rust Embed 使用指南

rust-embed Rust Macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev. rust-embed 项目地址: https://gitcode.com/gh_mirrors/ru/rust-embed

Rust Embed 是一个强大的 Rust 定制派生宏,它允许开发者在编译时将文件(如 CSS、JavaScript 和图像)嵌入到 Rust 可执行文件中,或者在开发模式下从文件系统加载这些资源。这种机制非常适合构建轻量级的 Docker 映像或确保部署的自包含性。

安装指南

要在您的 Rust 项目中使用 Rust Embed,首先需要将其添加为依赖项到您的 Cargo.toml 文件:

[dependencies]
rust-embed="8.5.0"

之后,执行 cargo update 或重新运行 cargo build 来下载并整合此库。

项目使用说明

使用 Rust Embed 首先需要定义一个结构体,并通过 #[derive(Embed)] 派生宏来标记,同时指定您想嵌入的静态文件夹路径。例如:

#[derive(Embed)]
#[folder = "examples/public/"]
struct Asset;

动态获取资源

您可以使用定义的结构体来访问嵌入的资源:

fn main() {
    let index_html = Asset::get("index.html").unwrap();
    println!("{:?}", std::str::from_utf8(index_html.data.as_ref()));
    
    for file in Asset::iter() {
        println!("{}", file.as_ref());
    }
}

属性配置

  • prefix: 添加前缀到所有文件路径。
  • metadata_only: 仅嵌入元数据而不包括文件内容。
  • 特征标志 (debug-embed, interpolate-folder-path, compression, include-exclude) 提供了额外的行为调整,比如始终嵌入文件,支持环境变量路径,压缩文件等。

项目API使用文档

Asset::get(file_path: &str) -> Option<rust_embed::EmbeddedFile>

  • 功能: 根据相对路径从资产文件夹中获取嵌入文件(如果启用相应特征或在发布模式下)或从文件系统读取。
  • 返回: 找到文件时返回 EmbeddedFile,否则为 None

Asset::iter()

  • 功能: 返回一个迭代器遍历资产文件夹中的文件名(在发布模式或启用了 debug-embed 特征时为预加载列表)。

结构体与元数据

  • EmbeddedFile: 包含文件的数据(data)和元数据(如哈希值、最后修改时间)。
  • Metadata: 描述文件的基本信息。

特征与集成

该库支持多种特性,如 debug-embed 强制在调试模式下也嵌入文件,以及与其他框架(如 Poem, Warp, Actix 等)的集成。

示例与测试

为了运行示例代码,比如在开发模式下:

cargo run --example basic

而在发布模式(此时文件被嵌入):

cargo run --example basic --release

特定框架的示例可能需要启用相应的特性标签,如 --features actix

通过遵循上述指南,您将能够高效地将静态资源融入您的 Rust 应用程序,简化部署流程,并提升应用的可移植性和自给自足性。享受 Rust 编程带来的强大与乐趣吧!

rust-embed Rust Macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev. rust-embed 项目地址: https://gitcode.com/gh_mirrors/ru/rust-embed

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦格婷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值