Бесплатная библиотека
Читайте книгу на сайте или телефоне
Rust на примерах - Читать Любимую Русскую Полную Книгу 👉 Read-E-Book.com

Rust на примерах

Электронная книга - «Rust на примерах». Краткое содержание книги:

https://doc.rust-lang.ru/stable/rust-by-example/
1 ... 29 30 31 32 33 34 35 36 37 ... 92
Перейти на страницу:

let open_box = my::OpenBox { contents: "публичную информацию" };

// а их поля доступны всем.

println!("Открытая упаковка хранит: {}", open_box.contents);

// Публичные структуры с приватными полями не могут быть созданы, используя имя полей

// Ошибка! `ClosedBox` имеет приватные поля

//let closed_box = my::ClosedBox { contents: "классифицированную информацию" };

// ЗАДАНИЕ ^ Попробуйте раскомментировать эту строку

// Однако, структуры с приватными полями могут быть созданы с помощью

// публичного конструктора

let _closed_box = my::ClosedBox::new("классифицированную информацию");

// нельзя получить доступ к приватным полям публичных структур.

// Ошибка! Поле `contents` приватное

//println!("Закрытая упаковка хранит: {}", _closed_box.contents);

// ЗАДАНИЕ ^ Попробуйте раскомментировать эту строку

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

generics и методы

Декларация use

Декларация use используется, чтобы связать полный путь с новым именем, что упрощает доступ.

// extern crate deeply; // обычно эта строка есть и она не закомментирована!

use crate::deeply::nested::{

my_first_function,

my_second_function,

AndATraitType

};

fn main() {

my_first_function();

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Вы можете использовать ключевое слово as, что импортировать сущности и функции под другим именем:

// Привязать путь `deeply::nested::function` к `other_function`.

use deeply::nested::function as other_function;

fn function() {

println!("вызвана `function()`");

}

mod deeply {

pub mod nested {

pub fn function() {

println!("вызвана `deeply::nested::function()`")

}

}

}

fn main() {

// Упрощённый доступ к `deeply::nested::function`

other_function();

println!("Entering block");

{

// Эквивалентно `use deeply::nested::function as function`.

// `function()` затенение собой внешнюю функцию.

use deeply::nested::function;

function();

// у привязок `use` локальная область видимости. В данном случае

// внешняя `function()` затенена только в этом блоке.

println!("Leaving block");

}

function();

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

super и self

Ключевые слова super и self в пути используются, чтобы устранить неоднозначность между используемыми элементами модуля.

fn function() {

println!("вызвана `function()`");

}

mod cool {

pub fn function() {

println!("called `cooclass="underline" :function()`");

}

}

mod my {

fn function() {

println!("вызвана `my::function()`");

}

mod cool {

pub fn function() {

println!("вызвана `my::cooclass="underline" :function()`");

}

}

pub fn indirect_call() {

// Давайте вызовем все функции под названием `function` в этой области видимости!

print!("вызвана `my::indirect_call()`, с помощью которойn> ");

// Ключевое слово `self` ссылается на область видимости текущего модуля.

1 ... 29 30 31 32 33 34 35 36 37 ... 92
Перейти на страницу:
0
Сюжет
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Атмосфера
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Главный герой
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
0
Общее впечатление
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)