Это 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 = ...