如何使用不在 crates.io 上的库?

How can I use a library that is not on crates.io?

我想使用这个库:https://github.com/stepfunc/dnp3,但它不在 crates.io 上,它只有一个存储库,我无法实现它。我试图将它添加到我的 Cargo.toml 中,例如 [dependencies] dnp3 = "0.9.1",但它说它不存在,而且实际上它没有板条箱。在存储库中,它在 dnp3/example 中有一些示例 use dnp3; 就好像它是一个板条箱。

我该如何使用它?

您可以直接指定 Github(或任何其他 git 存储库)作为依赖项的来源。

[dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3" }

参见货物参考:https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories

您可以将依赖项指定为 Git 个存储库。

[dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3" }

如果你想指定一个分支(假设你不想使用main/master),你可以在上面的声明中添加一个branch键:

[dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3", branch = "feature/rustls" }

相关阅读:指定来自 git 个存储库的依赖项

另一种方法是克隆存储库并使用具有本地路径的依赖项。

[dependencies]
dnp3 = { path = "../dnp3" }

相关生锈docs

当然,正如其他答案提到的那样,使用 git 版本对您来说更好。