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

Ключевое слово self

Ключевое слово self в Rust обозначает текущий экземпляр структуры, перечисления или типа, для которого вызывается метод. Оно используется в сигнатурах методов для указания получателя (self, &self, &mut self) и внутри тела метода для доступа к полям и другим методам этого экземпляра. Также self применяется в путях модулей для обозначения текущего модуля.

Синтаксис

// В сигнатуре метода fn method(self) { ... } fn method(&self) { ... } fn method(&mut self) { ... } // В теле метода self.field self.other_method() // В путях модулей self::function()

Пример

Давайте создадим структуру Point и реализуем для неё метод distance_to_origin, который использует &self для доступа к полям:

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

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

5

Пример

Давайте рассмотрим метод, который принимает &mut self и изменяет поля структуры:

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

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

2

Пример

Давайте рассмотрим метод, который принимает self по значению и потребляет экземпляр:

struct Message { text: String, } impl Message { fn into_text(self) -> String { self.text } } fn main() { let msg = Message { text: String::from("abcde") }; let res = msg.into_text(); println!("{}", res); }

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

"abcde"

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

  • ключевое слово fn,
    которое используется для объявления функций и методов
  • ключевое слово let,
    которое используется для создания переменных
  • ключевое слово mut,
    которое делает переменные и ссылки изменяемыми
  • ключевое слово ref,
    которое используется для создания ссылок в шаблонах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить