Ассоциированные константы
Ассоциированные константы - это константы, которые объявляются внутри блока
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