РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1187 of 1245 menu

Функция hint::assert_unchecked

Функция hint::assert_unchecked из модуля std::hint сообщает компилятору, что переданное ей булево условие всегда истинно. В отличие от макроса assert!, она не выполняет проверку во время исполнения и не паникует при нарушении условия. Параметром функция принимает булево выражение, которое, как обещает программист, всегда истинно. Функция является unsafe, потому что при нарушении этого обещания поведение программы становится неопределённым.

Функция возвращает . Если условие ложно, поведение не определено, поэтому вызывать её можно только тогда, когда вы уверены в истинности условия. Типичное применение - подсказка оптимизатору внутри уже проверенных ветвей кода.

Синтаксис

unsafe { std::hint::assert_unchecked(condition) }

Пример

Давайте сообщим компилятору, что переменная x всегда больше нуля, чтобы он мог лучше оптимизировать код:

use std::hint; fn main() { let x: i32 = 10; unsafe { hint::assert_unchecked(x > 0); } println!("{}", x); }

Результат выполнения кода:

10

Пример

Давайте применим функцию внутри цикла, где мы точно знаем, что индекс не выходит за границы среза:

use std::hint; fn main() { let arr = [1, 2, 3, 4, 5]; let len = arr.len(); let mut sum = 0; for i in 0..len { unsafe { hint::assert_unchecked(i < len); } sum += arr[i]; } println!("{}", sum); }

Результат выполнения кода:

15

Смотрите также

  • ключевое слово unsafe,
    которое открывает блок небезопасного кода
  • функция unreachable_unchecked,
    которая сообщает компилятору о недостижимости участка кода
  • функция transmute,
    которая переинтерпретирует биты одного типа как другой тип
  • функция black_box,
    которая скрывает значение от оптимизатора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить