Функция hint::black_box
Функция hint::black_box из модуля std::hint
служит подсказкой для компилятора. Она сообщает
оптимизатору, что переданное значение считается
"использованным" и не может быть удалено или
вычислено на этапе компиляции. Параметром функция
принимает любое значение типа T и возвращает
его обратно без изменений. Это особенно полезно
при написании бенчмарков, тестировании
производительности и изучении поведения кода.
Функция доступна в стабильном Rust, начиная
с версии 1.66. Она не является unsafe-функцией,
однако часто рассматривается в контексте
низкоуровневого программирования.
Синтаксис
std::hint::black_box(value)
Пример
Давайте рассмотрим простой пример, в котором
значение передаётся через black_box
и возвращается обратно:
use std::hint::black_box;
fn main()
{
let res = black_box(42);
println!("{}", res);
}
Результат выполнения кода:
42
Пример
Давайте посмотрим, как black_box помогает
предотвратить вычисление значения на этапе
компиляции. Без неё оптимизатор может
вычислить сумму заранее:
use std::hint::black_box;
fn main()
{
let x = black_box(2);
let y = black_box(3);
let res = x + y;
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте применим black_box к строке,
чтобы показать, что функция работает
с любым типом данных:
use std::hint::black_box;
fn main()
{
let res = black_box("abcde");
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Смотрите также
-
ключевое слово
unsafe,
которое открывает доступ к небезопасным операциям -
функция
unreachable_unchecked,
которая сообщает компилятору о недостижимости кода -
функция
assert_unchecked,
которая сообщает компилятору об истинности условия -
тип
MaybeUninit,
который представляет возможно неинициализированное значение