首页 > 解决方案 > 为什么在 rust rocket_contrib 时“服务中没有 crate_relative”?

问题描述

我试图通过我惯用的四处乱窜和运行示例的方法来学习一些生锈。

rust_contrib api docs上的这个页面让我觉得我可以像这样提供静态文件https://api.rocket.rs/master/rocket_contrib/serve/struct.StaticFiles.html ...

use rocket_contrib::serve::StaticFiles;
use rocket_contrib::serve::crate_relative;

...

fn main() {
    rocket::ignite()
        .mount("/content", StaticFiles::from(crate_relative!("content")))
        .mount("/", routes![index])
        .mount("/api", routes![hello, new_book])
        .register(catchers![not_found]) 
        .attach(Template::fairing())
        .launch();
}

相反,编译器对我咆哮......

    error[E0432]: unresolved import `rocket_contrib::serve::crate_relative`
 --> src/main.rs:9:5
  |
9 | use rocket_contrib::serve::crate_relative;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `crate_relative` in `serve`

Cargo.toml 看起来像这样......

[package]
name = "rocket-web"
version = "0.1.0"
authors = ["Nunya B. Znas <dontworry@bout.it>"]
edition = "2018"

[dependencies]
rocket = "0.4.5"
serde = {version = "1.0", features = ["derive"]}

[dependencies.rocket_contrib]
version = "0.4.5"
features = ["handlebars_templates", "tera_templates"]

我做了什么得罪了锈神?

谢谢

标签: rustrust-cargorust-rocket

解决方案


您正在查看的文档是 Rocket 的master分支,目前代表尚未发布的 0.5 版本。Rocket 0.4.5 版没有crate_relative.

对于解决方法,您可以查看0.4 文档如何执行此操作:

use rocket_contrib::serve::StaticFiles;

fn main() {
    rocket::ignite()
        .mount("/", StaticFiles::from(concat!(env!("CARGO_MANIFEST_DIR"), "/static")))
        .launch();
}

推荐阅读