Rust中如何通过cucumber访问gherkin_rust构建依赖项下的serde_json
问题解答
首先明确结论:满足你提出的「不修改自身Cargo.toml添加依赖、不使用extern crate声明」两个前提的情况下,没有合法途径可以访问到gherkin_rust的构建依赖中的serde_json库,原因如下:
- Rust的Cargo包管理器对依赖作用域有严格的隔离规则,
[build-dependencies]项下的依赖,作用域仅限对应包自身的构建脚本(build.rs)的编译和运行阶段,既不会被纳入该包本身的库代码编译依赖,也不会向下游传递暴露符号。你给出的依赖树中,serde_json仅在gherkin_rust的[build-dependencies]下存在,别说你作为下游用户,就连gherkin_rust自身的普通库代码都访问不到这个serde_json实例。
如果你可以放宽前提,最优解决方案如下:
- 直接在你自己项目的Cargo.toml中添加serde_json依赖即可,Rust允许同一项目内存在多个版本的同名依赖,你添加的serde_json不会和gherkin_rust的构建依赖产生冲突。且如果你使用的是Rust 2018及以后的版本,不需要额外写
extern crate serde_json声明,只要Cargo.toml中添加了依赖,就可以直接在代码中通过use serde_json::xxx的方式调用。
内容的提问来源于stack exchange,提问作者NaN
相关产品推荐
相关产品推荐

