J'essaie d'utiliser des constantes associées comme condition dans un fichier de type if
-pour initialiser une autre constante. Je pense que cela devrait fonctionner, car je peux utiliser les constantes associées directement pour initialiser une autre constante, de sorte que cela est applicable dans un contexte de constantes et que l'expression if ne dépend pas d'autres valeurs.
trait C {
const c: i32;
}
trait StaticAssert<T1: C, T2: C> {
const canUseAssociatedConst: i32 = T1::c;
const canCompareAssociatedConst: bool = T1::c == T2::c;
const check: i32 = if T1::c == T2::c { 1 } else { 0 };
}
Lorsque je compile ceci, j'obtiens une erreur :
error[E0019]: constant contains unimplemented expression type
--> src/lib.rs:9:24
|
9 | const check: i32 = if T1::c == T2::c { 1 } else { 0 };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Je ne suis pas sûr de ce que le compilateur veut me dire. J'ai ajouté i32
pour s'assurer que les littéraux sont effectivement i32
pour éviter tout problème lié à des types différents dans les branches, mais cela n'a pas aidé non plus.