添加proc-macro=true后VSCode rust-analyser调试透镜失效
解决proc-macro crate下rust-analyzer调试透镜运行测试报错问题
当给Cargo.toml加上proc-macro = true后,rust-analyzer的调试透镜运行lib.rs里的测试会报找不到libtest-xxx.so,核心原因是proc-macro属于特殊编译目标,编译产物为动态库,而rust-analyzer默认的测试运行逻辑没适配这种场景,未正确设置动态库的加载路径。
给你几个可行的解决办法:
拆分测试到集成测试目录:把lib.rs里的单元测试移到项目根目录的
tests/文件夹下,新建测试文件(比如tests/proc_macro_tests.rs)。proc-macro crate的测试推荐用集成测试方式,rust-analyzer能正常识别并运行这里的测试,不会出现动态库找不到的问题。强制rust-analyzer用cargo命令跑测试:在编辑器配置里(比如VS Code的settings.json)添加以下配置,让rust-analyzer直接调用
cargo test执行测试,cargo会自动处理动态库的加载路径:"rust-analyzer.testRunner": "cargo", "rust-analyzer.cargo.testArgs": ["--lib"]清理重建项目:如果是缓存或权限导致的问题,先清理target目录再重新构建:
cargo clean && cargo build
内容的提问来源于stack exchange,提问作者Volodymyr
相关产品推荐
相关产品推荐

