Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
514 of 1246 menu
◀ ▶

Приёмник &mut self

Приёмник &mut self используется в методах структур для получения изменяемой ссылки на текущий экземпляр. Такой метод может изменять поля структуры, но не может перемещать или забирать владение экземпляром. При вызове метода структура должна быть объявлена как изменяемая переменная.

Синтаксис

impl StructName { fn method_name(&mut self) { // тело метода } }

Пример

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

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

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

1

Пример

Давайте создадим структуру Point и метод shift, который сдвигает точку на заданные значения:

struct Point { x: i32, y: i32, } impl Point { fn shift(&mut self, dx: i32, dy: i32) { self.x += dx; self.y += dy; } } fn main() { let mut point = Point { x: 10, y: 20 }; point.shift(5, -3); println!("x: {}, y: {}", point.x, point.y); }

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

x: 15, y: 17

Пример

Давайте создадим структуру StringHolder и метод append, который добавляет текст к хранимой строке:

struct StringHolder { text: String, } impl StringHolder { fn append(&mut self, suffix: &str) { self.text.push_str(suffix); } } fn main() { let mut holder = StringHolder { text: String::from("abcde") }; holder.append("12345"); println!("{}", holder.text); }

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

"abcde12345"

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

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