Rocket.rs EventStream!宏编译报错:$crate::_typed_stream相关错误
解决Rocket.rs EventStream!宏重装Rust后编译错误
错误信息
$crate::_typed_stream宏展开时,+左侧应为路径、期望表达式却找到+
核心原因
重装Rust后,Rocket版本与当前Rust工具链版本不兼容,或依赖缓存残留导致版本冲突,触发宏展开语法错误。
解决步骤
检查Rust工具链与Rocket版本兼容性
Rocket不同版本对Rust工具链有明确要求(如Rocket 0.5需Rust 1.65+),先查看当前工具链版本:rustc --version若版本不匹配,调整工具链:
# 示例:安装并切换到1.70.0版本 rustup install 1.70.0 rustup default 1.70.0或升级Rocket到兼容当前工具链的版本。
清理依赖缓存并重新构建
重装后残留的旧依赖缓存可能引发冲突,执行:cargo clean cargo update cargo build规范EventStream!宏的使用语法
确保宏的使用符合当前Rocket版本要求,以Rocket 0.5为例:use rocket::response::stream::{EventStream, Event}; use rocket::tokio::time::{interval, Duration}; #[get("/events")] async fn events() -> EventStream![] { let mut interval = interval(Duration::from_secs(1)); EventStream! { loop { interval.tick().await; yield Event::json("ping"); } } }检查宏的括号、
yield语句等语法是否符合版本规范。锁定Cargo.toml依赖版本
避免模糊版本号导致拉取不兼容依赖,示例配置:[dependencies] rocket = { version = "0.5.0-rc.3", features = ["json"] }修复rust-analyzer环境
若之前卸载LLVM影响了编译环境,重新安装匹配版本的rust-analyzer:rustup component add rust-analyzer
内容的提问来源于stack exchange,提问作者user22437922
相关产品推荐
相关产品推荐

