如何在Rust中使用外部包装箱?

时间:2014-02-09 03:53:17

标签: libraries rust

我正在尝试使用rust-http库,我想将它作为小项目的基础。

我不知道如何使用我无法通过rustpkg install <remote_url>安装的内容。事实上,我今天发现rustpkg现已弃用。

如果我git clone库并运行相应的make命令来构建它,我该如何在其他地方使用它?即我如何实际使用extern crate http

5 个答案:

答案 0 :(得分:13)

您需要将-L标记传递给rustc,以将包含已编译的 http 库的目录添加到搜索路径中。像rustc -L path-to-cloned-rust-http-repo/build your-source-file.rs这样的东西应该这样做。

Tutorial reference

答案 1 :(得分:6)

自Rust 1.0以来,99%的用户将使用Cargo来管理项目的依赖关系。 TL;文档的DR是:

  1. 使用cargo new
  2. 创建项目
  3. 编辑生成的Cargo.toml文件以添加依赖项:

    [dependencies]
    old-http = "0.1.0-pre"
    
  4. 访问代码中的包:

    Rust 2015

    extern crate old_http;
    use old_http::SomeType;
    

    Rust 2018

    use old_http::SomeType;
    
  5. 使用cargo build

  6. 构建项目

    Cargo将负责管理版本,在需要时构建依赖项,并将正确的参数传递给编译器。

    阅读The Rust Programming Language了解有关Cargo入门的详细信息。

答案 2 :(得分:1)

构建完成后,您可以在代码中使用正常的extern crate http;。唯一的诀窍是,您需要将相应的-L标记传递给rustc,告诉它在哪里找libhttp

如果您的项目中有rust-http目录中的子模块,并且它是否构建到其根目录中(我实际上并不知道makerust-http存放的位置结果库),然后您可以使用rustc -L rust-http pkg.rs构建自己的项目。使用-L标记,extern crate http;中的pkg.rs行将能够在libhttp子文件夹中找到rust-http

答案 3 :(得分:0)

与您的帖子无关,但与您的标题有关。另外,以货运为主。

最佳做法:

  1. 名为foo的外部条板箱
use ::foo;
  1. 名为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" }