如何在Rust稳定版中使用rocket框架的rocket_contrib静态文件服务
问题原因
你引入的rocket_contrib = 0.4.10是适配Rocket 0.4版本的依赖,该版本的Rocket生态全量要求使用nightly Rust,与你当前使用的支持稳定版Rust的Rocket 0.5版本不兼容,才会触发Pear依赖的nightly要求报错。
解决方法
Rocket 0.5版本已经将原rocket_contrib的功能拆分到官方维护的独立组件和核心库内置模块中,静态文件服务功能已经内置到核心库的rocket::fs模块,无需额外引入rocket_contrib,操作步骤如下:
- 移除Cargo.toml中全部
rocket_contrib相关的依赖配置 - 直接使用核心库提供的静态文件服务能力即可,示例代码如下:
use rocket::fs::{FileServer, relative}; #[launch] fn rocket() -> _ { rocket::build() // 第一个参数是路由访问前缀,第二个参数是静态文件存放的本地相对路径 .mount("/static", FileServer::from(relative!("static"))) }
- 重新执行
cargo build即可在稳定版Rust下正常编译。
如果需要用到原rocket_contrib的其他功能,可查找官方提供的对应0.5版本的独立crate,比如你已经在使用的rocket_dyn_templates就是原contrib中模板功能的0.5适配版本。
内容的提问来源于stack exchange,提问作者Yohannes Kifle
相关产品推荐
相关产品推荐

