Por exemplo, se para o seu projeto você sempre compila cruzada usando cargo build --target=thumbv6m-none-eabi
. Este recurso permite adicionar um par de valores-chave ao arquivo de configuração de carga:
# .cargo/config
[target]
default = "thumbv6m-none-eabi"
Isso permitirá que você simplesmente chame cargo build
para fazer a compilação cruzada de seu projeto para thumbv6m-none-eabi
. Isso também se estenderia a cargo doc
.
Reportado originalmente aqui .
Isso parece bastante razoável para mim, embora eu possa ir mais longe a ponto de dizer que deveria estar em Cargo.toml, pois é provavelmente uma coisa por projeto _se_ for uma coisa para começar.
Uma desvantagem (?) De torná-la uma configuração de projeto é que a configuração sempre será ignorada para dependências. Exemplo: Se meu projeto P depende da caixa D e D definiu T como seu destino padrão, essa configuração _sempre_ será ignorada porque D sempre será compilado para o destino que eu escolhi para P.
Uma vantagem de usar .cargo / config é que, se estou desenvolvendo vários engradados localmente, posso ter uma configuração como esta:
$ tree .
my-RTOS-project
├── .cargo
│ └── config
├── allocator
│ └── (...)
├── hal
│ └── (...)
├── RusTOS
│ └── (...)
└── scheduler
└── (...)
E posso pular de um diretório de caixa para outro e executar cargo test
. Em algum ponto, posso editar uma única linha em .cargo / config e começar a testar minhas caixas para um destino diferente.
Aha sim mesmo! Isso está um pouco sob a alçada de https://github.com/rust-lang/cargo/issues/2122 onde isso _não_ deve ser uma desvantagem, mas ainda há algum trabalho de design a fazer lá também.
Comentários muito úteis
Isso parece bastante razoável para mim, embora eu possa ir mais longe a ponto de dizer que deveria estar em Cargo.toml, pois é provavelmente uma coisa por projeto _se_ for uma coisa para começar.