咨询 rust 如何方便修改, 集成第三方 crate.

79 天前
 kyonn

在写 rust 小工具, 碰到个问题, 依赖的第三方 library 有几个小 bug, 我能想到的常规做法可能是 fork 下这个第三方库, 改完后也上传到 crate.io, 然后引用这个修改后的 package, 最后提个 PR 给原始仓库的作者.

这一套下来感觉比较麻烦, 有没有办法直接将这个第三方 package 嵌入我的 rust 工程? 能想到比较笨的办法是直接把这个库的源码拷贝进我的工程, 然后将它的 Cargo.toml 内容集成进我的配置文件, 它的源文件嵌入我的工程.但是这么修改破坏了原本的工程结构.

有没有这样一种办法, 以类似离线的方式引用这个库, 其它库还是在线引用, 但是这个离线库跟我自己的 rust 工程存在同一个 git 仓库, 这样我能方便修改库的代码. 相当于我的一个 git 仓库中存在 2 个独立的 rust 工程, 1 个是我的工具工程, 另一个是拷贝过来的 库 工程, 但是工具工程可以用 package 的方式引用这个库工程.

这么做可以快速把工具开发出来, 另一方面, 等库的原作者接受 PR 后, 也能方便把引用的库切换回去, 而不用调整工程结构, 只要把引用的 package 修改下, 然后从工程仓库删除修改后的 library 即可.

1137 次点击
所在节点    Rust
2 条回复
ie88
79 天前
关键字:cargo, patch
[Patching Cargo Dependencies]( https://gatowololo.github.io/blog/cargo-patch/)
kyonn
79 天前
@ie88 感谢, 看了下应该就是我想要的效果. 十分精准的关键字.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1098384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX