Могу ли я установить библиотеку, используя Cargo без Cargo.toml?

Я начинаю через Rust и мне нужно получить ранд-ящик в моей системе. Я не занимаюсь упаковкой грузов (например, создаю Cargo.toml), потому что меня интересует язык, а не упаковка.

Могу ли я установить библиотеку rand в моей системе, не создавая Cargo.toml с помощью команды cargo?

$ cargo install rand
    Updating registry 'https://github.com/rust-lang/crates.io-index'
specified package has no binaries

Ответ 1

Практический ответ

Используйте груз. Он чрезвычайно прост в использовании и не позволяет вам стрелять себе в ногу с помощью управления версиями (и конфликтующими версиями).

потому что я интересовался языком, а не упаковкой.

С точки зрения 99,9% пользователей Rust, Cargo является частью языка или, по крайней мере, частью экосистемы Rust. В ящиках есть много вещей, которые вы можете ожидать в стандартной библиотеке других языков (отличный пример - генерация случайных чисел).

установить библиотеку в моей системе

В конечном счете, это не имеет смысла. Там нет единой верной версии библиотеки, которую вы можете установить. Каждая программа, которая использует ящик, может использовать свою версию, потому что у нее разные потребности. Более того, вы можете скомпилировать ящик по-разному для разных проектов - у ящиков есть функции, которые меняют способ их компиляции.

cargo install rand

На самом деле это способ использовать Cargo для создания всего проекта Rust, который предоставляет двоичный файл и установить его в вашей системе. Это имеет больше смысла, поскольку это отдельная, ограниченная сущность. К сожалению, это может сбивать с толку именно по этой причине!

Смотрите также:

Технически правильный ответ

Конечно вы можете; Вы просто должны сделать все, что Cargo делает для вас вручную. Это включает в себя

  1. Скачивание пакета.
    1. Это также означает любые зависимости пакета.
    2. И правильные версии.
  2. Скомпилируйте пакет.
    1. И зависимости.
    2. Поддержание дерева зависимостей и передача его каждому последующему пакету.
  3. Наконец, вы можете скомпилировать свой код.

Конкретный пример компиляции одной библиотеки и одного исполняемого файла с использованием этой библиотеки:

$ rustc --edition=2018 --crate-type=rlib --crate-name library_example src/lib.rs -o libmy_library.rlib
$ rustc --edition=2018 --extern library_example=libmy_library.rlib examples/main.rs