Библиотека knigago >> Компьютеры: Языки и системы программирования >> Другие языки и системы программирования >> Rust на примерах


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1280, книга: Нагант
автор: Михаил Юрьевич Елизаров

Михаил Елизаров, известный своими провокационными и захватывающими произведениями, возвращается с "Нагантом", современной прозой, которая поражает своей raw и бескомпромиссной честностью. Действие книги разворачивается в отчужденном провинциальном городке, где жизнь кажется стоячей и безнадежной. Главный герой, Николай, потеряв работу на заводе, погружается в мир алкоголизма, насилия и дешевого секса. В отчаянной попытке вернуть себе ускользающий контроль, он присоединяется к местной...

Коллектив авторов - Rust на примерах

Rust на примерах
Книга - Rust на примерах.   Коллектив авторов  - прочитать полностью в библиотеке КнигаГо
Название:
Rust на примерах
Коллектив авторов

Жанр:

Другие языки и системы программирования, Учебники и самоучители по компьютеру, Любительские переводы, Программирование: прочее

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Rust на примерах"

https://doc.rust-lang.ru/stable/rust-by-example/
Rust - современный язык программирования, нацеленный на безопасность, скорость и параллелизм. Данные цели выполняются при условии безопасной работы с памятью без использования сборщика мусора.

Rust на примерах - это набор исполняемых примеров, которые иллюстрируют различные концепции языка Rust, а так же возможности его стандартной библиотеки. Для того, чтобы подчеркнуть ещё больше из этих примеров, не забудьте установить Rust на своём компьютере и проверить официальную документацию. Если вы ранее не сталкивались с языком программирования Rust, то советую вам для начала ознакомиться с русскоязычной книгой по Rust. Кроме этого можно посмотреть исходный код этого сайта или оригинала.

Читаем онлайн "Rust на примерах". [Страница - 77]

указанию зависимостей.

Небезопасные операции

В качестве введения в этот раздел процитируем официальную документацию, "нужно стараться минимизировать количество небезопасного кода в кодовой базе." Имея это в виду, давайте начнём! Небезопасные аннотации в Rust используются для обхода блокировок защиты, устанавливаемых компилятором; в частности, существует четыре основных варианта использования небезопасного кода:

   • разыменование сырых указателей

   • вызов функций или методов, которые являются unsafe (включая вызов функции через FFI см. предыдущую главу книги)

   • доступ или изменение статических изменяемых переменных

   • реализация небезопасных типажей

Сырые указатели

Сырые указатели * и ссылки &T имеют схожую функциональность, но ссылки всегда безопасны, потому что они гарантированно указывают на достоверные данные за счёт механизма проверки заимствований. Разыменование же сырого указателя можно выполнить только через небезопасный блок.

fn main() {

let raw_p: *const u32 = &10;

unsafe {

assert!(*raw_p == 10);

}

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Вызов небезопасных функций

Некоторые функции могут быть объявлены как unsafe, то есть за корректность этого кода несёт ответственность программист, написавший его, вместо компилятора. Пример - это метод std::slice::from_raw_parts, который создаст срез из указателя на первый элемент и длины.

use std::slice;

fn main() {

let some_vector = vec![1, 2, 3, 4];

let pointer = some_vector.as_ptr();

let length = some_vector.len();

unsafe {

let my_slice: &[u32] = slice::from_raw_parts(pointer, length);

assert_eq!(some_vector.as_slice(), my_slice);

}

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Для slice::from_raw_parts одно из предположений, которое должно быть поддержано, что переданный указатель указывает на допустимую память и что в памяти лежит значение правильного типа. Если эти инварианты не поддерживаются, то поведение программы не определено, и неизвестно, что произойдёт.

Совместимость

Rust быстро развивается и из-за этого могут возникнуть определённые проблемы совместимости, не смотря на усилия по обеспечению обратной совместимости везде, где это возможно.

   • Сырые идентификаторы

Сырые идентификаторы

В Rust, как и во многих других языках программирования, существует концепция "ключевых слов". Эти идентификаторы что-то значат для языка и из-за этого вы не можете использовать их в качестве названия переменных, именах функций и других местах. Сырые идентификаторы позволяют использовать ключевые слова там, где они обычно не разрешены. Это особенно полезно, когда Rust вводит новые ключевые слова и библиотеки, использующие старую редакцию Rust, имеют переменные или функции с таким же именем, как и ключевое слово, введённое в новой редакции.

Например, рассмотрим крейт foo, скомпилированный с 2015 редакцией Rust, и который экспортирует функцию с именем try. Это ключевое слово зарезервировано для новой функциональности в 2018 редакции, из-за чего без сырых идентификаторов мы не можем назвать так функцию.

extern crate foo;


fn main() {

foo::try();

}

Вы получите ошибку:

error: expected identifier, found keyword `try`

--> src/main.rs:4:4

|

4 | foo::try();

| ^^^ expected identifier, found keyword

Вы можете записать это при помощи сырого идентификатора:

extern crate foo;


fn main() {

foo::r#try();

}

Meta

Некоторые темы не совсем соответствуют тому, как вы программируете, но предоставляют вам инструменты или инфраструктуру, которые делают лучше для всех. Эти темы включают:

   • Документацию: генерирование пользовательской документации с использованием rustdoc.

   • Playpen: интегрирование Rust Playpen (также известного как Rust --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.

Другие книги автора « Коллектив авторов»:

Химия.  Коллектив авторов
- Химия

Жанр: Детская образовательная литература

Год издания: 2006

Серия: Большая серия знаний

П. А. Столыпин.  Коллектив авторов
- П. А. Столыпин

Жанр: Биографии и Мемуары

Год издания: 2017

Серия: Государственные деятели России глазами современников

Помпеи: сгинуший город.  Коллектив авторов
- Помпеи: сгинуший город

Жанр: Научно-популярная и научно-познавательная литература

Год издания: 1997

Серия: Энциклопедия Исчезнувшие цивилизации