Например, если для вашего проекта вы всегда выполняете кросс-компиляцию с использованием cargo build --target=thumbv6m-none-eabi
. Эта функция позволит вам добавить пару ключ-значение в ваш файл конфигурации Cargo:
# .cargo/config
[target]
default = "thumbv6m-none-eabi"
Это позволит вам просто вызвать cargo build
для кросс-компиляции вашего проекта для thumbv6m-none-eabi
. Это также распространяется на cargo doc
.
Первоначально сообщается здесь .
Мне это кажется довольно разумным, хотя я могу пойти дальше и сказать, что это должно быть в Cargo.toml, поскольку это, вероятно, вещь для каждого проекта, _ если_ это вещь, с которой нужно начинать.
Одним из недостатков (?) Того, чтобы сделать это параметром проекта, является то, что параметр всегда будет игнорироваться для зависимостей. Пример: если мой проект P зависит от ящика D и D установил T в качестве цели по умолчанию, этот параметр будет _всегда_ игнорироваться, потому что D всегда будет компилироваться для цели, которую я выбираю для P.
Одним из преимуществ использования .cargo / config является то, что если я разрабатываю несколько ящиков локально, у меня может быть такая настройка:
$ tree .
my-RTOS-project
├── .cargo
│ └── config
├── allocator
│ └── (...)
├── hal
│ └── (...)
├── RusTOS
│ └── (...)
└── scheduler
└── (...)
И я могу переходить из одного каталога ящика в другой и запускать cargo test
. В какой-то момент я могу отредактировать одну строку в .cargo / config и начать тестирование своих ящиков для другой цели.
Ага, да, действительно! Это в некоторой степени подпадает под действие https://github.com/rust-lang/cargo/issues/2122, где это _не должно_ быть недостатком, но там также есть некоторая дизайнерская работа.
Самый полезный комментарий
Мне это кажется довольно разумным, хотя я могу пойти дальше и сказать, что это должно быть в Cargo.toml, поскольку это, вероятно, вещь для каждого проекта, _ если_ это вещь, с которой нужно начинать.