compile_error |
Erreur de compilation |
|---|---|
| Rust | |
Syntaxe
|
macro_rules! compile_error { ($msg:expr $(,)?) => { ... }; } |
Description
Cette macro permet de provoquer une erreur de compilation explicite avec un message personnalisé, utilisée pour signaler des cas invalides à la compilation.
Remarques
Provoque l'échec de la compilation avec le message d'erreur indiqué lorsqu'elle est rencontrée.
Cette macro doit être utilisée lorsqu'une crate utilise une stratégie de compilation conditionnelle afin de fournir de meilleurs messages d'erreur en cas d'erreur. Il s'agit de la version de panic! au niveau du compilateur, mais elle génère une erreur lors de la compilation plutôt qu'à l'exécution.
Exemples
Les macros et les environnements #[cfg] en sont deux exemples.
Émet une meilleure erreur de compilation si une macro reçoit des valeurs non valides. Sans la branche finale, le compilateur générerait quand même une erreur, mais le message d'erreur ne mentionnerait pas les deux valeurs valides.
- macro_rules! give_me_foo_or_bar {
- (foo) => {};
- (bar) => {};
- ($x:ident) => {
- compile_error!("Cette macro accepte uniquement `foo` ou `bar`");
- }
- }
-
- give_me_foo_or_bar!(neither);
- // ^ échouera au moment de la compilation avec le message « Cette macro n'accepte que `foo` ou `bar` »
Émettre une erreur de compilation si l'une des nombreuses fonctionnalités n'est pas disponible :
- #[cfg(not(any(feature = "foo", feature = "bar")))]
- compile_error!("La fonctionnalité \"foo\" ou \"bar\" doit être activée pour cette caisse.");