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

Ассоциированные константы

Ассоциированные константы - это константы, которые объявляются внутри блока impl структуры и доступны через имя типа. Они не привязаны к конкретному экземпляру структуры и не принимают self. Параметров такие константы не имеют, а их значение вычисляется на этапе компиляции.

Синтаксис

impl StructName { const CONST_NAME: Type = value; }

Пример

Давайте объявим структуру Circle с ассоциированной константой PI и методом для вычисления площади:

struct Circle { radius: f64, } impl Circle { const PI: f64 = 3.14159; fn area(&self) -> f64 { Circle::PI * self.radius * self.radius } } fn main() { let c = Circle { radius: 2.0 }; println!("{}", c.area()); }

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

12.56636

Пример

Ассоциированную константу можно использовать без создания экземпляра структуры, обращаясь к ней через имя типа:

struct Math; impl Math { const E: f64 = 2.71828; const GOLDEN: f64 = 1.61803; } fn main() { println!("{}", Math::E); println!("{}", Math::GOLDEN); }

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

2.71828 1.61803

Пример

Давайте объявим ассоциированную константу целочисленного типа и используем её как размер массива:

struct Buffer; impl Buffer { const SIZE: usize = 5; } fn main() { let arr: [i32; Buffer::SIZE] = [1, 2, 3, 4, 5]; println!("{:?}", arr); }

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

[1, 2, 3, 4, 5]

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

  • блок impl,
    в котором объявляются ассоциированные константы
  • ассоциированные функции,
    которые также объявляются внутри impl и не принимают self
  • методы,
    которые принимают self и работают с экземпляром структуры
  • Self,
    который ссылается на текущий тип внутри impl
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить