Атрибут #[inline]
Атрибут #[inline] является подсказкой компилятору
о том, что функцию желательно встроить непосредственно
в место вызова. Это может уменьшить накладные расходы
на вызов функции и открыть дополнительные возможности
для оптимизации. Атрибут применяется к функциям и методам
перед их объявлением. Параметров атрибут не принимает.
Синтаксис
#[inline]
fn function_name()
{
// тело функции
}
Пример
Давайте объявим простую функцию с атрибутом #[inline]
и вызовем её:
#[inline]
fn add(a: i32, b: i32) -> i32
{
a + b
}
fn main()
{
let res = add(2, 3);
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте применим атрибут #[inline] к методу структуры:
struct Point
{
x: i32,
y: i32,
}
impl Point
{
#[inline]
fn sum(&self) -> i32
{
self.x + self.y
}
}
fn main()
{
let p = Point { x: 3, y: 4 };
let res = p.sum();
println!("{}", res);
}
Результат выполнения кода:
7
Пример
Давайте используем атрибут #[inline(always)],
который является более строгой формой подсказки:
#[inline(always)]
fn square(n: i32) -> i32
{
n * n
}
fn main()
{
let res = square(5);
println!("{}", res);
}
Результат выполнения кода:
25