false во время компиляции. Глупый вопрос: а он вычисляется в константный bool?
Вот в доках есть вот такой пример:
let my_directory = if cfg!(windows) {
"windows-specific-directory"
} else {
"unix-directory"
};
Я же правильно понимаю, что из-за const-eval оно соберется в одно присваивание вообще без условного перехода?
False ветка даже не компилится
Ну, по-хорошему, до компилятора этот код дойдет в виде: let my_directory = if false { "windows-specific-directory" } else { "unix-directory" }; И вот тут начинается мой вопрос. Насколько я знаю, if уже разрешен в константных выражениях, поэтому if false {1} else {2} должен вычислиться в {2}. Это правда?
Если оптимизатор с ума не сошел, то да
Не, подожди. Вычислением константных выражений вроде не оптимизатор занимается, разве нет?
Обсуждают сегодня