如何在 Rust 项目之间共享公共代码,而不必发布到 crates.io?

19

这个问题可能没有一个很好的答案,但是我有一些代码希望可以在两个不同的Rust项目之间共享而不必发布到crates.io上。

这段代码是私有的,我不想将其公开。


1
FYI,这似乎是X-Y问题的一个很好的例子。看起来你真的想知道“如何在不公开发布公共代码的情况下共享代码”,但问题是关于解决方案的;这个解决方案从技术上讲排除了我的答案被接受的可能性。我赌一把它实际上解决了你的根本问题。^_^ - Shepmaster
我可能需要重新审视这个问题,以使其更贴近意图。 - Matthieu M.
1
@mattforni:我的意思是,这个问题更多的是关于“不发布到crates.io”而不是“不创建crate”,所以最好把重点放在“不发布到crates.io”的部分上;然后答案可以集中在如何在公司内部分发crate上,这才是你想要解决的问题,而不是让自己陷入一些远程同步复制/粘贴文件之类的愚蠢行为 :) - Matthieu M.
1
看看我对你的问题所做的改动,我认为这就是@MatthieuM.和我建议的。如果你认为它不再符合你的原意,请随意回滚。 - Shepmaster
1
@Shepmaster: 这确实是我也在考虑的问题;现在这个问题可能会引起更广泛的关注,因为我想很多组织都不愿意将他们的代码暴露在互联网上。 - Matthieu M.
显示剩余2条评论
1个回答

19
但这是专有代码,我不想将其公开发布。你不必发布一个crate。具体来说,只需创建crate(cargo new shared_stuff),然后在依赖项目的Cargo.toml中指定通用crate的路径。
[dependency.shared_stuff]
path = "path/to/shared/crate"

Cargo documentation有一个完整的章节介绍依赖的类型:

我相信Cargo可以从私有的git仓库获取依赖(例如Github或其他私有托管服务,如GitLab),但我个人没有尝试过。根据我的搜索,您需要事先进行身份验证或配置git,以免需要交互式输入密码。


理论上可以创建自己的箱子注册表。我甚至没有尝试过这样做,但是Cargo中的机制可以处理它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接