将传递依赖的本地构建添加到rust wasm应用程序

hfwmuf9z  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(176)

我想添加一些日志到一个库中,既可以直接在我的应用程序中使用,也可以从另一个库中作为传递依赖。所以我已经克隆了repo,添加了日志记录,然后添加为
somelib = {path= "../../somelib"}
我的货物。然后构建失败,“依赖关系图中只有一个包可以指定相同的链接值”,这似乎是一个已知的issue(或少数相关)。
我的理解是不是正确的,它现在不能解决?使用“path”是强制cargo使用本地lib的唯一方法吗?也许本地修改的版本可以复制到一些缓存或类似的?或者在Cargo.lock中调整一些东西?分叉它并尝试添加为github dep,否则会出现与本地路径相同的问题?

rta7y2nd

rta7y2nd1#

我想添加一些日志到一个库中,既可以直接在我的应用程序中使用,也可以从另一个库中作为传递依赖。
当你想用修改后的代码替换一个 transitive 依赖项时,这是[patch]部分的工作,在the “Overriding Dependencies” chapter of the Cargo reference中有记录。
在项目的根目录Cargo.toml(无论是包还是工作区)中,您可以这样写:

[patch.crates-io]
somelib = { path = "../../somelib" }

然后,只要在www.example.com中存在somelib的依赖项 crates.io**,并且与您的修补版本声明的主版本相同**,它就会被替换为您的修补版本。
请注意,[patch]仅适用于在您的包/工作区中完成的cargo build[patch]在你发布你的软件包时没有效果;当其他项目依赖于你的库时,你不允许弄乱依赖关系图。如果这是您的情况,那么您必须将更改贡献给上游库,或者在必要时分叉并发布您自己的版本。

相关问题