如何链接本地Rust库? (类似于npm链接)

时间:2014-08-04 13:37:24

标签: node.js git rust rust-crates rust-cargo

在节点中开发库时, 如果您希望针对仅存在于本地的库进行开发, 在npm publish之前, 你可以使用npm link /path/to/other/node_library

Rust的相同之处是什么? 如何创建另一个链接到bar库的foo可执行文件, 没有先将bar库推送到git遥控器?

The official rust tutorial显示了如何使用原始rustc执行此操作, 如何在Cargo.toml

中完成此操作

cargo documentation向您展示如何构建lib, 但现在如何链接到没有远程存储库的那个。)

3 个答案:

答案 0 :(得分:6)

如果您的依赖项位于本地git仓库中,也可以使用git file: URL:

[dependencies.local_dep]
git = "file:/some/local/path"

当您想要使用某个包的自己的本地副本时,还有一个非常有用的功能。您可以在~/.cargo/config文件中指定此类包的路径:

package-name = "/path/to/package"

使用此配置时,其他一些软件包(我们将其命名为a)需要package-name,而不管a清单中package-name位置的内容是package-name ,{{1}}将从此配置文件中指定的源树构建。当您需要在库中测试其他项目所依赖的更改时,这非常有用。

答案 1 :(得分:2)

你可以这样做:

[dependencies.local_dep]
path = "some/local/path"

查看https://github.com/gfx-rs/gfx-rs/blob/master/Cargo.toml以获取示例。

答案 2 :(得分:0)

http://doc.crates.io/manifest.html#the-dependencies-section包含使用path字段(geometry包)进行此操作的示例:

[package]
# ...

[dependencies]
hammer = { version = "0.5.0", git = "https://github.com/wycats/hammer.rs" }
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }