Как использовать ящик в другом проекте, чтобы он больше не компилировался? - PullRequest
0 голосов
/ 01 июля 2018

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

Это моя структура ящика:

hellow_crate
|__src
|  |__lib.rs
|__Cargo.lock
|__Cargo.toml

Это файл моего ящика Cargo.toml:

[package]
name = "hellow_new"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]

Это структура моего проекта:

hello_project
|  |__main.rs
|__Cargo.lock
|__Cargo.toml

Это файл Cargo.toml моего проекта:

[package]
name = "hello_project"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]

1 Ответ

0 голосов
/ 01 июля 2018

Здесь есть два возможных решения.

Добавьте зависимость к вашему ящику как относительный путь:

Предполагается, что структура проекта следующая:

project
|__hellow_crate
|__hello_project

Затем вы можете изменить файл Cargo.toml в hellow_project, чтобы он выглядел следующим образом:

[package]
name = "hello_project"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]
hellow_crate = { path = "../hellow_crate" }

Использовать рабочее пространство:

Если hellow_crate используется только hello_project и не будет использоваться в качестве зависимости для другого независимого проекта, имеет смысл включить его как часть рабочего пространства.

В этом случае структура каталогов становится следующей:

hello_project
|__hellow_crate
|  |__src
|  |  |__lib.rs
|  |__Cargo.toml
|  |__Cargo.lock
|__src
|  |__main.rs
|__Cargo.lock
|__Cargo.toml

И измените файл Cargo.toml hello_project, чтобы он выглядел так:

[package]
name = "hello_project"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]

[workspace]
members = [ "hellow_crate" ]

[dependencies]
hellow_crate = { path = "hellow_crate" }

Это имеет преимущество в том, что Cargo компилирует весь код в единый целевой каталог, и позволяет запускать все тесты проекта и ящика с помощью cargo test --all.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...