Как использовать внешние ящики в 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 документации:
- Создайте проект, используя
cargo new
Отредактируйте сгенерированный файл Cargo.toml
, чтобы добавить зависимости:
[dependencies]
old-http = "0.1.0-pre"
Получите доступ к ящику в своем коде:
Ржавчина 2015
extern crate old_http;
use old_http::SomeType;
Rust 2018
use old_http::SomeType;
Создайте проект с помощью 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
.