Может ли функция Cargo активировать функции из необязательных зависимостей, не вызывая активацию этих ящиков? - PullRequest
0 голосов
/ 16 октября 2018

Это Cargo.toml для ящика библиотеки.Он поддерживает две разные встроенные платы благодаря наличию необязательных зависимостей от ящиков поддержки плат board-a и board-b, и только одна из них выбирается при запуске cargo build --features target-a.

. Существует также общий сторонний модуль., который по выбору использует функцию const-fn.Эта опция доступна в ящике библиотеки:

[dependencies]
common = {...}
board-a = {optional=true, ...}
board-b = {optional=true, ...}

[features]
const-fn = ["common/const-fn"]
target-a = ["board-a"]
target-b = ["board-b"]

Пока все хорошо, но что, если ящики board-a и board-b также имеют дополнительные функции const-fn, и я хочу показать эти опциипользователям библиотеки ящик?Могу ли я сделать это без создания функций target-a-const-fn и target-b-const-fn?Это, очевидно, очень запутанно, если я получу больше дополнительных функций или больше плат, которые мы поддерживаем.

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

[features]
const-fn = ["common/const-fn", "board-a/const-fn" if target-a, "board-b/const-fn" if target-b]
target-a = ...
...