Как я могу использовать библиотеку, которая не включена crates.io?

#rust #rust-cargo #crate #dnp3

Вопрос:

Я хочу использовать эту библиотеку: https://github.com/stepfunc/dnp3, но это не на crates.io, у него есть только репозиторий, и я не могу его реализовать. Я попытался добавить его в свой Cargo.toml список, [dependencies] dnp3 = "0.9.1" но он говорит, что его не существует, и на самом деле у него нет ящика. Внутри хранилища есть несколько примеров, в dnp3/example которых use dnp3; все выглядит так, как будто это ящик.

Как я могу это использовать?

Ответ №1:

Вы можете напрямую указать Github (или любой другой репозиторий git) в качестве источника зависимости.

 [dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3" }
 

Смотрите справку о грузе: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories

Комментарии:

1. Спасибо! Я попробую это прямо сейчас

2. большое спасибо! Это сработало идеально, с этого момента я буду лучше читать документацию

Ответ №2:

Вы можете указать зависимости в качестве репозиториев Git.

 [dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3" }
 

Если вы хотите указать ветвь (при условии, что вы не хотите использовать main / master ), вы можете добавить branch ключ в приведенное выше объявление:

 [dependencies]
dnp3 = { git = "https://github.com/stepfunc/dnp3", branch = "feature/rustls" }
 

Чтение по теме: Указание зависимостей от репозиториев git

Ответ №3:

Другим способом сделать это было бы клонировать репозиторий и использовать зависимость с локальным путем.

 [dependencies]
dnp3 = { path = "../dnp3" }
 

Связанные документы по ржавчине

Но, конечно, как и в других ответах, в вашем случае лучше использовать версию git.

Комментарии:

1. это тоже очень полезно! Огромное спасибо