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

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

Ключевое слово ref применяется в шаблонах сопоставления, таких как let, match, if let и while let. Оно указывает компилятору создать ссылку на значение, а не перемещать или копировать его. Это особенно полезно, когда нужно избежать перемещения владения или получить доступ к части структуры данных без изменения оригинала.

Ключевое слово ref не является оператором взятия ссылки & - оно работает именно в контексте шаблонов. Параметров у него нет, оно лишь модифицирует поведение привязки переменной в шаблоне.

Синтаксис

let ref имя_переменной = значение; match значение { ref имя_переменной => { /* ... */ } }

Пример

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

fn main() { let s = String::from("abcde"); let ref r = s; println!("{}", r); }

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

"abcde"

Пример

Давайте используем ref в шаблоне match, чтобы получить ссылку на элемент кортежа без его перемещения:

fn main() { let t = (1, 2, 3); match t { (ref a, _, _) => println!("{}", a), } println!("{:?}", t); }

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

1 (1, 2, 3)

Пример

Давайте применим ref к полю структуры, чтобы получить ссылку на него:

struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 1, y: 2 }; let Point { ref x, ref y } = p; println!("{} {}", x, y); println!("{} {}", p.x, p.y); }

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

1 2 1 2

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

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