rust 在warp中提供捆绑在可执行文件中的静态文件?

hgtggwj0  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(102)

我现在正在使用Warp和Rust编写一个应用程序,我想把它打包成一个独立的可执行文件,但是warp::fs::dir似乎从文件系统加载它,正如名字所暗示的那样。
有没有办法把静态文件打包成一个曲速过滤器?有没有其他的框架来支持这一点?
只是为了澄清,通过“捆绑”我的意思是这样的:

fn get_file() -> &str {
    include_str!("file.html")
}
jyztefdp

jyztefdp1#

您似乎正在从static_dir crate中查找static_dir宏。
关于documentation
创建一个过滤器,该过滤器服务于由请求路径连接的基$path上的目录。
它的行为很像warp的fs::dir,但不是在运行时从文件系统提供文件,而是在编译时将提供的目录嵌入到二进制文件中。
如果提供的路径是相对的,它将相对于项目根目录(根据CARGO_MANIFEST_DIR环境变量)。

use static_dir::static_dir;
use warp::Filter;

// Matches requests that start with `/static`, and then uses the
// rest of that path to lookup and serve a file from `/www/static`.
let route = warp::path("static").and(static_dir!("/www/static"));

// For example:
// - `GET /static/app.js` would serve the file `/www/static/app.js`
// - `GET /static/css/app.css` would serve the file `/www/static/css/app.css`
wnvonmuf

wnvonmuf2#

rust-vfs crate支持EmbeddedFS,即二进制文件本身中的文件系统。
编辑:来自crates.io的文档链接有问题,this是EmbeddedFS部件的文档。

相关问题