我想添加一些日志到一个库中,既可以直接在我的应用程序中使用,也可以从另一个库中作为传递依赖。所以我已经克隆了repo,添加了日志记录,然后添加为somelib = {path= "../../somelib"}
我的货物。然后构建失败,“依赖关系图中只有一个包可以指定相同的链接值”,这似乎是一个已知的issue(或少数相关)。
我的理解是不是正确的,它现在不能解决?使用“path”是强制cargo使用本地lib的唯一方法吗?也许本地修改的版本可以复制到一些缓存或类似的?或者在Cargo.lock中调整一些东西?分叉它并尝试添加为github dep,否则会出现与本地路径相同的问题?
1条答案
按热度按时间rta7y2nd1#
我想添加一些日志到一个库中,既可以直接在我的应用程序中使用,也可以从另一个库中作为传递依赖。
当你想用修改后的代码替换一个 transitive 依赖项时,这是
[patch]
部分的工作,在the “Overriding Dependencies” chapter of the Cargo reference中有记录。在项目的根目录
Cargo.toml
(无论是包还是工作区)中,您可以这样写:然后,只要在www.example.com中存在
somelib
的依赖项 crates.io**,并且与您的修补版本声明的主版本相同**,它就会被替换为您的修补版本。请注意,
[patch]
仅适用于在您的包/工作区中完成的cargo build
。[patch]
在你发布你的软件包时没有效果;当其他项目依赖于你的库时,你不允许弄乱依赖关系图。如果这是您的情况,那么您必须将更改贡献给上游库,或者在必要时分叉并发布您自己的版本。