我正在尝试使用rust-http库,我想将它作为小项目的基础。
我不知道如何使用我无法通过rustpkg install <remote_url>
安装的内容。事实上,我今天发现rustpkg
现已弃用。
如果我git clone
库并运行相应的make
命令来构建它,我该如何在其他地方使用它?即我如何实际使用extern crate http
?
答案 0 :(得分:13)
您需要将-L
标记传递给rustc
,以将包含已编译的 http 库的目录添加到搜索路径中。像rustc -L path-to-cloned-rust-http-repo/build your-source-file.rs
这样的东西应该这样做。
答案 1 :(得分:6)
自Rust 1.0以来,99%的用户将使用Cargo来管理项目的依赖关系。 TL;文档的DR是:
cargo new
编辑生成的Cargo.toml
文件以添加依赖项:
[dependencies]
old-http = "0.1.0-pre"
访问代码中的包:
Rust 2015
extern crate old_http;
use old_http::SomeType;
Rust 2018
use old_http::SomeType;
使用cargo build
Cargo将负责管理版本,在需要时构建依赖项,并将正确的参数传递给编译器。
阅读The Rust Programming Language了解有关Cargo入门的详细信息。
答案 2 :(得分:1)
构建完成后,您可以在代码中使用正常的extern crate http;
。唯一的诀窍是,您需要将相应的-L
标记传递给rustc
,告诉它在哪里找libhttp
。
如果您的项目中有rust-http
目录中的子模块,并且它是否构建到其根目录中(我实际上并不知道make
中rust-http
存放的位置结果库),然后您可以使用rustc -L rust-http pkg.rs
构建自己的项目。使用-L
标记,extern crate http;
中的pkg.rs
行将能够在libhttp
子文件夹中找到rust-http
。
答案 3 :(得分:0)
与您的帖子无关,但与您的标题有关。另外,以货运为主。
最佳做法:
foo
的外部条板箱use ::foo;
foo
的模块(属于代码/板条箱)use crate::foo;
在两种情况下,您都可以改用use foo;
,但这会引起混乱。
答案 4 :(得分:-1)
我遇到了类似的问题。我最终在Cargo.toml中完成了此操作
git symbolic-ref
然后在我的main.rs中,我可以添加它并成功编译。请注意,在我的情况下,这个货物包装是一个宏。通常,您不希望在外部呼叫前使用#[macro_use]。
[dependencies]
shell = { git = "https://github.com/google/rust-shell" }