Это возможно без Car go, но вам придется делать то, что он обычно делает для вас.
- Скачать все зависимости.
- Скомпилировать все зависимости с
rustc
с использованием правильных флагов.
rand v0.7.3
├── getrandom v0.1.14
│ ├── cfg-if v0.1.10
│ └── libc v0.2.66
├── libc v0.2.66 (*)
├── rand_chacha v0.2.1
│ ├── c2-chacha v0.2.3
│ │ └── ppv-lite86 v0.2.6
│ └── rand_core v0.5.1
│ └── getrandom v0.1.14 (*)
└── rand_core v0.5.1 (*)
rand
не так уж и плохо, всего 8 транзитивных зависимостей (включая сам rand
, не включая дубликаты). Тем не менее, вам нужно go к crates.io или github и загрузить правильную версию исходного кода для каждого.
Затем идет компиляция. Минимум, который вам нужно будет сделать, чтобы скомпилировать свой двоичный файл, составляет rustc -L dependency=/path/to/dependency/dir src/main.rs
. Но помните, что вы должны сделать это для каждой из 8 зависимостей, и все они имеют свои внешние зависимости. Вам также необходимо определить правильный порядок их компиляции.
Перемещение, некоторые ящики имеют свои собственные настройки в Cargo.toml
, которые необходимо соблюдать. Некоторые ящики даже имеют скрипт сборки, который нужно скомпилировать и запустить (libc
- пример в этом дереве зависимостей).
В качестве альтернативы, вы можете просто поставить
[dependencies]
rand = "0.7.3"
в вашем Cargo.toml
и запустите cargo build
. Твой выбор. Car go - это одна из самых приятных вещей в Rust, поэтому я предлагаю вам его использовать.
PS Чтобы увидеть, что именно cargo
делает, запустите cargo clean
, чтобы удалить все уже скомпилированные зависимости , Затем запустите cargo build --verbose
(или cargo build -vv
, если вы смелый). Вы увидите все флаги, которые передаются rustc
, скрипты, которые запускаются, и все остальное.