РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
513 of 1245 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить