Структуры

Аннотирование времени жизни в структурах аналогично функциям:

// Тип `Borrowed`, в котором находится ссылка на `i32`.

// Ссылка на `i32` должна пережить `Borrowed`.

#[derive(Debug)]

struct Borrowed<'a>(&'a i32);

// Аналогично, обе ссылки расположенные здесь, должны пережить эту структуру.

#[derive(Debug)]

struct NamedBorrowed<'a> {

x: &'a i32,

y: &'a i32,

}

// Перечисление, которое указывает на `i32` или на ссылку.

#[derive(Debug)]

enum Either<'a> {

Num(i32),

Ref(&'a i32),

}

fn main() {

let x = 18;

let y = 15;

let single = Borrowed(&x);

let double = NamedBorrowed { x: &x, y: &y };

let reference = Either::Ref(&x);

let number = Either::Num(y);

println!("x заимствован в {:?}", single);

println!("x и y заимствованы в {:?}", double);

println!("x заимствован в {:?}", reference);

println!("y *не* заимствован в {:?}", number);

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

Структуры

Загрузка...