web-dev-qa-db-ja.com

Rustで外部クレートを使用するにはどうすればよいですか?

Rust-http ライブラリを使用しようとしていますが、これを小さなプロジェクトの基礎として使用したいと思います。

rustpkg install <remote_url>でインストールできないものの使い方がわかりません。実際、私は今日、rustpkgが非推奨になっていることを知りました。

ライブラリをgit cloneし、適切なmakeコマンドを実行してビルドした場合、他の場所でどのように使用しますか?つまり実際にextern crate httpを使用するにはどうすればよいですか?

17
lucperkins

更新

最新のRustについては、 this answerを参照してください。


元の回答

-Lフラグをrustcに渡して、コンパイルされたhttpライブラリを含むディレクトリを検索パスに追加する必要があります。 。 rustc -L path-to-cloned-Rust-http-repo/build your-source-file.rsのようなことをする必要があります。

チュートリアルリファレンス

15
nameless

Rust 1.0なので、すべてのユーザーの99%が Cargo を使用してプロジェクトの依存関係を管理します。ドキュメントのTL; DRは次のとおりです。

  1. cargo newを使用してプロジェクトを作成します
  2. 生成されたCargo.tomlファイルを編集して、依存関係を追加します。

    [dependencies]
    old-http = "0.1.0-pre"
    
  3. コード内のクレートにアクセスします。

    Rust 2015

    extern crate old_http;
    use old_http::SomeType;
    

    Rust 2018

    use old_http::SomeType;
    
  4. cargo buildでプロジェクトをビルドします

Cargoは、バージョンの管理、必要に応じた依存関係の構築、およびすべての依存関係をリンクするための正しい引数のコンパイラーへの受け渡しを行います。

Cargoの使用を開始する方法の詳細については、 Rustプログラミング言語 をお読みください。

13
Shepmaster

ビルドしたら、コードで通常のextern crate http;を使用できます。唯一の秘訣は、適切な-Lフラグをrustcに渡して、libhttpの場所を指示する必要があることです。

プロジェクトのRust-httpディレクトリにサブモジュールがあり、それがルートに組み込まれている場合(Rust-httpmakeが結果のライブラリをどこに格納するかは実際にはわかりません)、次に、rustc -L Rust-http pkg.rsを使用して独自のプロジェクトを構築できます。その-Lフラグを使用すると、extern crate http;pkg.rs行はRust-httpサブフォルダーでlibhttpを見つけることができます。

1
Lily Ballard