Rust Rocket 0.4.10使用nightly工具链编译报E0277错误如何解决?
问题根因
这个报错和MacOS平台无关,是Rocket 0.4.x版本与你使用的过新的Rust nightly工具链不兼容导致的。Rocket 0.4系列依赖特定版本的nightly语法特性,Rust nightly迭代过程中语法规则发生了变动,直接用最新版nightly编译会触发trait实现校验错误。
可尝试的解决方案
方案1:固定匹配Rocket 0.4.10的nightly版本
如果你要继续使用Rocket 0.4.x版本,只需把项目的工具链锁定到官方指定的兼容版本即可,操作步骤如下:
- 在项目根目录执行命令设置工具链覆盖:
rustup override set nightly-2021-05-18 - 等待rustup自动下载安装对应版本的工具链后,重新执行
cargo build或cargo run即可正常编译。
方案2:升级到Rocket 0.5及以上版本(更推荐)
Rocket 0.5之后的版本已经支持稳定版Rust,不需要依赖nightly工具链,适配性更强,修改方法如下:
- 修改Cargo.toml中的依赖配置:
rocket = "0.5.0" - 替换main.rs的代码为适配0.5版本的写法:
#[macro_use] extern crate rocket; #[get("/")] fn index() -> &'static str { "Hello, world!" } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![index]) }
- 移除项目的nightly覆盖配置:
rustup override unset,直接用稳定版Rust执行cargo run即可启动项目。
内容的提问来源于stack exchange,提问作者Piwo
相关产品推荐
相关产品推荐

