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

Приёмник self

Приёмник self - это первый параметр метода, который указывает, как метод получает доступ к экземпляру структуры. В Rust существует три основных формы приёмника: self (владение), &self (заимствование по ссылке) и &mut self (изменяемое заимствование). Выбор приёмника определяет, может ли метод потреблять, читать или изменять экземпляр.

Синтаксис

impl StructName { fn method(self) { } fn method(&self) { } fn method(&mut self) { } }

Пример

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

struct Point { x: i32, y: i32, } impl Point { fn into_tuple(self) -> (i32, i32) { (self.x, self.y) } fn sum(&self) -> i32 { self.x + self.y } fn shift(&mut self, dx: i32, dy: i32) { self.x += dx; self.y += dy; } } fn main() { let mut p = Point { x: 1, y: 2 }; println!("{}", p.sum()); p.shift(3, 4); println!("{}", p.sum()); let t = p.into_tuple(); println!("{:?}", t); }

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

3 10 (4, 6)

Пример

Метод с приёмником self потребляет экземпляр, поэтому после его вызова исходная переменная становится недоступной:

struct Counter { value: i32, } impl Counter { fn consume(self) -> i32 { self.value } } fn main() { let c = Counter { value: 42 }; let v = c.consume(); println!("{}", v); }

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

42

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

  • метод self-ref,
    который описывает заимствование через &self
  • метод self-mut,
    который описывает изменяемое заимствование через &mut self
  • метод self-value,
    который описывает владение через self
  • метод methods,
    который описывает методы структур в целом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить