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

Блок impl

Блок impl используется для реализации методов и связанных функций для структуры. Внутри этого блока определяются функции, которые могут принимать экземпляр структуры (методы) или не принимать его (связанные функции). Блок impl связывает код с конкретным типом, позволяя вызывать методы через экземпляр структуры или через саму структуру.

Синтаксис

impl StructName { // methods and associated functions }

Пример

Давайте создадим структуру Point и реализуем для неё метод new, который создаёт новый экземпляр, и метод distance, который вычисляет расстояние от точки до начала координат:

struct Point { x: f64, y: f64, } impl Point { fn new(x: f64, y: f64) -> Point { Point { x, y } } fn distance(&self) -> f64 { (self.x * self.x + self.y * self.y).sqrt() } } fn main() { let p = Point::new(3.0, 4.0); let res = p.distance(); println!("{}", res); }

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

5

Пример

Давайте реализуем для структуры Counter метод increment, который увеличивает значение счётчика на 1:

struct Counter { count: u32, } impl Counter { fn new() -> Counter { Counter { count: 0 } } fn increment(&mut self) { self.count += 1; } } fn main() { let mut c = Counter::new(); c.increment(); c.increment(); println!("{}", c.count); }

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

2

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

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