如何在Cargo.toml中为带可选特性的依赖指定提交版本
如何在Cargo.toml中指定含特性的Git仓库特定提交作为依赖
我要在提交PR前测试上游库的变更是否适配我的代码,但不知道怎么在Cargo.toml里指定GitHub仓库及特定提交作为依赖源,同时保留原本的特性配置。
当前我的Cargo.toml内容如下:
karyon_net = "0.1.8" [dependencies.karyon_jsonrpc] version = "0.1.8" features = ["tcp", "tls"]
我曾错误地尝试把git和rev放在version字段里,比如version = { git = "https://github.com/PiRK/karyon.git", rev = "5923b2b47ff2699530f26cfeb5d45929a828eaa3" },但Cargo要求version必须是语义化版本字符串,后来得知可以用git字段,但找不到正确的语法示例。
正确配置方式
当依赖需要从Git仓库获取时,不需要写version字段,直接将git、rev(或分支/标签)与features放在同一个依赖配置块中即可。如果多个依赖来自同一个仓库,建议统一使用相同的提交哈希,避免版本不一致问题。
修改后的Cargo.toml示例:
karyon_net = { git = "https://github.com/PiRK/karyon.git", rev = "5923b2b47ff2699530f26cfeb5d45929a828eaa3" } [dependencies.karyon_jsonrpc] git = "https://github.com/PiRK/karyon.git" rev = "5923b2b47ff2699530f26cfeb5d45929a828eaa3" features = ["tcp", "tls"]
额外说明
rev字段可以填完整的提交哈希,也可以用branch = "main"指定分支,或tag = "v0.1.9"指定标签- 原有的
features字段直接保留,就能继续启用对应的特性支持 - 配置完成后,Cargo会从指定的Git仓库拉取对应提交的代码,而非从crates.io下载
内容的提问来源于stack exchange,提问作者PiRK
相关产品推荐
相关产品推荐

