Как использовать внешние ящики в Rust?

Я пытаюсь работать с библиотекой rust-http, и я хотел бы использовать ее как основу для небольшого проекта.

Я понятия не имею, как использовать то, что я не могу установить через rustpkg install <remote_url>. Сегодня я узнал, что rustpkg устарела.

Если я git clone библиотека и запускаю соответствующие команды make, чтобы построить ее, как я могу использовать ее в другом месте? То есть как я на самом деле использую extern crate http?

Ответ 1

Обновление

Для современного Rust см. этот ответ.


Оригинальный ответ

Вам нужно передать флаг -L в rustc, чтобы добавить каталог, содержащий скомпилированную библиотеку http, в путь поиска. Нечто подобное rustc -L path-to-cloned-rust-http-repo/build your-source-file.rs должно делать.

Учебное пособие

Ответ 2

Начиная с Rust 1.0, 99% всех пользователей будут использовать Cargo для управления зависимостями проекта. TL; DR документации:

  1. Создайте проект, используя cargo new
  2. Отредактируйте сгенерированный файл Cargo.toml, чтобы добавить зависимости:

    [dependencies]
    old-http = "0.1.0-pre"
    
  3. Получите доступ к ящику в своем коде:

    Ржавчина 2015

    extern crate old_http;
    use old_http::SomeType;
    

    Rust 2018

    use old_http::SomeType;
    
  4. Создайте проект с помощью cargo build

Cargo позаботится об управлении версиями, построении зависимостей при необходимости и передаче правильных аргументов компилятору.

Прочитайте Язык программирования Rust для получения дополнительной информации о начале работы с Cargo.

Ответ 3

Как только вы его построите, вы можете использовать обычный код 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.