Я пытаюсь использовать связанные константы в качестве условия в if
-выражении для инициализации другой константы.Я думаю, что это должно работать, так как я могу использовать связанные константы непосредственно для инициализации некоторой другой константы, поэтому она применима в контексте const, и выражение if не зависит от каких-либо других значений.
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 };
}
Когда я компилирую это, я получаю сообщение об ошибке:
error[E0019]: constant contains unimplemented expression type
--> src/lib.rs:9:24
|
9 | const check: i32 = if T1::c == T2::c { 1 } else { 0 };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Я не уверен, что компилятор хочет сказать мне.Я добавил i32
суффиксы, чтобы убедиться, что литералы на самом деле являются i32
значениями, чтобы не допустить проблем с различными типами в ветвях, но это тоже не помогло.