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

Приведение ссылок as

Оператор as в Rust используется для явного приведения типов, включая приведение ссылок между совместимыми типами. При работе со ссылками as позволяет преобразовывать ссылку на один тип в ссылку на другой тип, если между этими типами существует допустимое преобразование. Чаще всего это применяется для приведения ссылок к указателям, для изменения изменяемости ссылки, а также для приведения ссылок на массивы к ссылкам на срезы. Параметром оператора является целевой тип, к которому нужно привести исходное значение.

Синтаксис

let res = value as TargetType;

Пример

Давайте приведём ссылку на массив к ссылке на срез:

fn main() { let arr: [i32; 5] = [1, 2, 3, 4, 5]; let slice: &[i32] = &arr as &[i32]; println!("{:?}", slice); }

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

[1, 2, 3, 4, 5]

Пример

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

fn main() { let mut x: i32 = 42; let mut_ref: &mut i32 = &mut x; let immut_ref: &i32 = mut_ref as &i32; println!("{}", immut_ref); }

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

42

Пример

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

fn main() { let x: i32 = 42; let r: &i32 = &x; let ptr: *const i32 = r as *const i32; unsafe { println!("{}", *ptr); } }

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

42

Пример

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

fn main() { let mut x: i32 = 10; let r: &mut i32 = &mut x; let ptr: *mut i32 = r as *mut i32; unsafe { *ptr = 20; println!("{}", *ptr); } }

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

20

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

  • оператор as,
    который выполняет явное приведение типов
  • типаж From,
    который определяет безопасное преобразование между типами
  • типаж Into,
    который предоставляет обратное преобразование к From
  • метод as_ref,
    который преобразует значение в ссылку на другой тип
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить