Cargo无法解析Rust工作区本地导入的问题及配置咨询
解决Rust工作区本地依赖无法解析的问题
问题出在producer crate的编译类型配置上:你将它的crate-type设为了["cdylib"],而cdylib是专门用来生成供非Rust语言调用的动态库的,这种类型的crate不能被其他Rust crate作为依赖引用,这就是Cargo报错use of undeclared crate or module 'producer'的核心原因。
至于rust-analyzer能提供智能提示,是因为它在代码分析阶段会忽略crate-type的编译限制,只专注于代码结构解析,所以能识别到producer中的类型,但实际编译时Cargo会严格遵循规则,因此出现报错。
修复步骤
修改producer/Cargo.toml中的[lib]配置:
- 如果只需要让
producer作为Rust内部依赖使用,直接改成Rust标准库类型rlib:
[lib] crate-type = ["rlib"]
- 如果同时需要生成供其他语言调用的动态库,保留
cdylib并添加rlib:
[lib] crate-type = ["cdylib", "rlib"]
修改完成后执行cargo build,consumer就能正常解析producer的导入并编译通过。
内容的提问来源于stack exchange,提问作者Dan Forbes
相关产品推荐
相关产品推荐

