Главная страница
Навигация по странице:

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

  • Разработчики Open Source

  • Люди, которые ценят скорость и стабильность

  • Как использовать эту книгу

  • Ferris Пояснения Этот код не компилируется!Этот код вызывает панику! Ferris Пояснения

  • Исходные коды Файлы с исходным кодом, используемым в этой книге, можно найти на GitHub Начало работы

  • Условные обозначения командной строки

  • Установка

  • Устранение возможных ошибок

  • Язык программирования Rust


    Скачать 7.02 Mb.
    НазваниеЯзык программирования Rust
    Дата12.04.2023
    Размер7.02 Mb.
    Формат файлаpdf
    Имя файлаThe Rust Programming Language_ru.pdf
    ТипУчебник
    #1056301
    страница1 из 62
      1   2   3   4   5   6   7   8   9   ...   62

    Язык программирования Rust
    От Стива Клабника и Кэрол Николс, при поддержке других участников сообщества Rust
    В этой версии учебника предполагается, что вы используете Rust 1.62 (выпущена
    30.06.2022) или новее. См. раздел
    «Установка» главы 1
    для установки или обновления
    Rust.
    HTML-версия книги доступна онлайн по адресам https://doc.rust-lang.org/stable/book/
    (англ.)
    и https://doc.rust-lang.ru/book
    (рус.)
    и офлайн. При установке Rust с помощью rustup
    :
    просто запустите rustup docs --book
    , чтобы её открыть.
    Также доступны несколько переводов от сообщества.
    Этот материал доступен в виде печатной книги в мягкой обложке и в формате электронной книги от No Starch Press

    Предисловие
    Не всегда было ясно, но язык программирования Rust в основном посвящён расширению
    возможностей: независимо от того, какой код вы пишете сейчас, Rust позволяет вам достичь большего, чтобы программировать уверенно в более широком диапазоне областей, чем вы делали раньше.
    Возьмём, к примеру, работу «системного уровня», которая касается низкоуровневых деталей управления памятью, представления данных и многопоточности. Традиционно эта область программирования считается загадочной, доступной лишь немногим избранным, посвятившим долгие годы изучению всех её печально известных подводных камней. И даже те, кто практикуют это, делают всё с осторожностью, чтобы их код не был уязвим для эксплойтов, сбоев или повреждений.
    Rust разрушает эти барьеры, устраняя старые подводные камни и предоставляя дружелюбный, отполированный набор инструментов, который поможет вам на этом пути. Программисты, которым необходимо «погрузиться» в низкоуровневое управление,
    могут сделать это с помощью Rust, не беря на себя привычный риск аварий или дыр в безопасности и не изучая тонкости изменчивых наборов инструментов. Более того, язык предназначен для того, чтобы легко вести вас к надёжному коду, который эффективен с точки зрения скорости и использования памяти.
    Программисты, которые уже работают с низкоуровневым кодом, могут использовать Rust для повышения своих амбиций. Например, внедрение параллелизма в Rust является операцией с относительно низким риском: компилятор поймает для вас классические ошибки. И вы можете заняться более агрессивной оптимизацией в своём коде с уверенностью, что не будете случайно добавлять в код сбои или уязвимости.
    Но Rust не ограничивается низкоуровневым системным программированием. Он достаточно выразителен и эргономичен, чтобы приложения CLI (Command Line Interface
    – консольные программы), веб-серверы и многие другие виды кода были довольно приятными для написания — позже вы найдёте простые примеры того и другого в книге.
    Работа с Rust позволяет вырабатывать навыки, которые переносятся из одной предметной области в другую; вы можете изучить Rust, написав веб-приложение, а затем применить те же навыки для Raspberry Pi.
    Эта книга полностью раскрывает потенциал Rust для расширения возможностей его пользователей. Это дружелюбный и доступный материал, призванный помочь вам повысить уровень не только ваших знаний о Rust, но и ваших возможностей и уверенности как программиста в целом. Так что погружайтесь, готовьтесь учиться и добро пожаловать в сообщество Rust!
    — Nicholas Matsakis и Aaron Turon

    Введение
    Примечание: это издание книги так же, как и
    The Rust Programming Language
    ,
    доступно в печатном и электронном виде от
    No Starch Press
    Добро пожаловать в The Rust Programming Language, вводную книгу о Rust. Язык программирования Rust помогает создавать быстрые, более надёжные приложения.
    Хорошая эргономика и низкоуровневый контроль часто являются противоречивыми требованиями для дизайна языков программирования; Rust бросает вызов этому конфликту. Благодаря сбалансированности мощных технических возможностей c большим удобством разработки, Rust предоставляет возможности управления низкоуровневыми элементами (например, использование памяти) без трудностей,
    традиционно связанными с таким контролем.
    Кому подходит Rust
    Rust подходит для многих людей по разным причинам. Приведём несколько самых важных групп.
    Команды разработчиков
    Rust обеспечивает эффективные средства для совместной работы больших команд разработчиков с различным уровнем знаний системного программирования.
    Низкоуровневый код подвержен множеству незаметных ошибок, которые в большинстве других языков могут быть найдены только в результате обширного тестирования и тщательного анализа кода опытными разработчиками. В Rust компилятор играет роль привратника, отказываясь компилировать код с этими неуловимыми ошибками, включая ошибки параллелизма. Компилятор позволяет команде разработчиков больше сосредоточить своё внимание на логике, а не терять время на поиски ошибок.
    Rust также предлагает современные инструменты разработки для системного программирования:
    Cargo, встроенный менеджер зависимостей и инструмент сборки, добавляет,
    компилирует и управляет зависимостями безболезненно и согласованно, используя экосистему Rust.
    Rustfmt обеспечивает согласованный стиль кодирования для всех разработчиков.
    Языковой сервер Rust обеспечивает интеграцию с интегрированной средой разработки (IDE) для завершения кода и встроенных сообщений об ошибках.

    Эти и другие инструменты экосистемы Rust обеспечивают разработчикам продуктивность при написании кода системного уровня.
    Студенты
    Rust полезен для студентов и тех, кто заинтересован в изучении системных концепций.
    Используя Rust, многие люди узнали о таких темах, как разработка операционных систем. Сообщество радушно и с удовольствием ответит на вопросы начинающих.
    Благодаря усилиям, таким как эта книга, команды Rust хотят сделать концепции систем более доступными для большего числа людей, особенно для новичков в программировании.
    Компании
    Сотни компаний, больших и малых, используют Rust для различных целей. Эти задачи включают в себя инструменты командной строки, веб-сервисы, инструменты DevOps,
    встраиваемые устройства, анализ и транскодирование аудио и видео, крипто-валюты,
    биоинформатика, поисковые системы, приложения интернета вещей, машинное обучение и даже основные части браузера Firefox.
    Разработчики Open Source
    Rust для людей, которые хотят построить язык программирования Rust, сообщество,
    инструменты разработчика и библиотеки. Мы хотели бы, чтобы вы внесли свой вклад в развитие языка Rust.
    Люди, которые ценят скорость и стабильность
    Rust для людей, которые жаждут скорости и стабильности в языке. Под скоростью здесь мы подразумеваем и скорость программ, которые вы можете создать с помощью Rust, и скорость с которой Rust позволяет вам написать их. Проверки компилятора Rust обеспечивают стабильность через добавление функций и рефакторинг. Это в корне отличается от хрупкого устаревшего кода на языках без таких проверок, который разработчики часто боятся изменить. Стремясь к абстракциям с нулевой стоимостью,
    компилируя высокоуровневые функции в код более низкого уровня так же быстро, как код, написанный вручную, Rust стремится сделать безопасный код также и быстрым.
    Язык Rust надеется также на поддержку многих других пользователей (здесь упомянуты только несколько крупнейших заинтересованных сторон). В целом, величайшая важность Rust заключается в устранении компромиссов, которые программисты
    принимали десятилетиями, обеспечивая безопасность и производительность, скорость и
    эргономику. Попробуйте Rust и посмотрите, работает ли это для вас.
    Для кого эта книга
    В этой книге предполагается, что вы уже писали код на другом языке программирования,
    но не делается никаких предположений о том, на каком. Мы пытались сделать материал хорошо доступным для тех, кто имеет большой опыт в программировании. Мы не тратим много времени на разговоры о том, что такое программирование или как думать об этом. Если вы новичок в программировании, вам больше подойдёт чтение книг, в которых содержится введение в программирование.
    Как использовать эту книгу
    В целом, эта книга предполагает, что вы читаете её последовательно от начала до конца.
    Более поздние главы основываются на концепциях предыдущих. Иногда более ранние главы могут не углубляться в детали темы; мы обычно возвращаемся к теме в последующих главах.
    В этой книге вы найдёте два вида глав: концептуальные главы и главы проекта. В
    концептуальных главах вы узнаете об аспектах Rust. В главах проекта мы будем вместе строить небольшие программы, применяя то, что вы узнали. Главы 2, 12 и 20 являются главами проекта; остальные являются концептуальными главами.
    В главе 1 объясняется, как установить Rust, написать программу “Hello, world!” и использовать сборщик Cargo и менеджер пакетов в одном лице. Глава 2 является практическим введением в язык Rust. В ней объясняются концепции верхнего уровня и в более поздних главах предоставляются дополнительные детали о них. Если хотите сразу погрузиться в практику, то для этого предназначена глава 2. Вначале можно даже пропустить главу 3, которая рассказывает про возможности языка аналогичные тем, что есть в других языках и перейти к главе 4, для изучения системы владения в Rust. Однако,
    если вы дотошный ученик, предпочитающий изучить каждую особенность до перехода к следующей, то можно пропустить главу 2 и перейти сразу к главе 3, возвращаясь к главе
    2, если захочется поработать над проектом и применить полученные знания.
    Глава 5 описывает структуры и методы, а глава 6 охватывает перечисления, выражения match и конструкции управления потоком if let
    . Вы будете использовать структуры и перечисления для создания пользовательских типов в Rust.
    В главе 7 вы узнаете о системе модулей Rust и о правилах конфиденциальности для организации вашего кода и его публичного программного интерфейса - Application
    Programming Interface (API). В главе 8 обсуждаются некоторые общие коллекции структур
    данных, которые предоставляет стандартная библиотека, например, векторы, строки и
    HashMap. Глава 9 исследует философию и методы обработки ошибок Rust.
    В главе 10 рассматриваются шаблонные типы данных, типажи и времена жизни, которые дают вам силу разрабатывать код, который может использоваться разными типами.
    Глава 11 посвящена тестированию, которое даже с гарантиями безопасности в Rust,
    необходимо для обеспечения правильной логики вашей программы. В главе 12 мы создадим собственную реализацию подмножества функциональности инструмента командной строки grep
    , предназначенного для поиска текста в файлах. Для этого мы будем использовать многие концепции, которые обсуждались в предыдущих главах.
    Глава 13 исследует замыкания и итераторы: особенности Rust, которые пришли из функциональных языков программирования. В главе 14 мы подробнее рассмотрим Cargo и расскажем о лучших способах предоставления пользования вашими библиотеками другим разработчикам. Глава 15 обсуждает умные указатели, которые предоставляет стандартная библиотека и свойства, которые обеспечивают их функциональность.
    В главе 16 мы рассмотрим различные модели параллельного программирования и поговорим о том, как Rust помогает вам безбоязненно программировать в нескольких потоках. Глава 17 рассказывает о том, как идиомы Rust сравниваются с принципами объектно-ориентированного программирования, с которыми вы, возможно, знакомы.
    Глава 18 является справочником по шаблонам и сопоставлению с образцом, которые являются мощным способом выражения идей в программах на Rust. Глава 19 содержит обзор продвинутых тем, представляющих интерес, включая небезопасный Rust, макросы,
    больше о временах жизни, шаблонах, типах, функциях и замыканиях.
    В главе 20 мы завершим проект, в котором мы реализуем низкоуровневый многопоточный веб-сервер!
    Наконец, некоторые приложения содержат полезную информацию о языке в более справочном формате. В приложении A рассматриваются ключевые слова Rust, в приложении B - операторы и символы Rust, в приложении C - производные характеристики, предоставляемые стандартной библиотекой, в приложении D - некоторые полезные инструменты разработки, а в приложении E - издания Rust. В
    приложении F вы найдёте переводы книги, а в приложении G мы расскажем о том, как создаётся Rust и что такое nightly Rust.
    Нет способа читать эту книгу неправильно: если вы хотите пропустить что-то и пройти вперёд, делайте это! Возможно, вам придётся вернуться к предыдущим главам, если у вас появятся какие-либо затруднения. Делайте так, как считаете удобным для себя.
    Важной частью процесса обучения Rust является изучение того, как читать сообщения об ошибках, которые отображает компилятор: они приведут вас к работающему коду. Мы изучим много примеров, которые не компилируются и отображают ошибки в сообщениях компилятора в разных ситуациях. Знайте, что если вы введёте и запустите случайный пример, он может не скомпилироваться! Убедитесь, что вы прочитали
    окружающий текст, чтобы понять, не предназначен ли пример, который вы пытаетесь запустить, для демонстрации ошибки. Ferris также поможет вам различить код, который не предназначен для работы:
    Ferris
    Пояснения
    Этот код не компилируется!
    Этот код вызывает панику!

    Ferris
    Пояснения
    Этот код не даёт желаемого поведения.
    В большинстве случаев мы приведём вас к правильной версии любого кода, который не компилируется.
    Исходные коды
    Файлы с исходным кодом, используемым в этой книге, можно найти на
    GitHub

    Начало работы
    Начнём наше путешествие в Rust! Нужно много всего изучить, но каждое путешествие с чего-то начинается. В этой главе мы обсудим:
    установку Rust на Linux, macOS и Windows,
    написание программы, печатающей
    Hello, world!
    ,
    использование cargo
    , менеджера пакетов и системы сборки в одном лице для Rust.

    Установка
    Первым шагом является установка Rust. Мы загрузим Rust, используя инструмент командной строки rustup
    , предназначенный для управлениями версиями Rust и другими связанными с ним инструментами. Вам понадобится интернет соединение для его загрузки.
    Примечание: Если вы по каким-то причинам предпочитаете не использовать rustup,
    пожалуйста, посетите страницу «Другие методы установки Rust»
    для получения дополнительных опций.
    Следующие шаги устанавливают последнюю стабильную версию компилятора Rust.
    Стабильность Rust гарантирует, что все примеры в книге, которые компилируются, будут продолжать компилироваться с более новыми версиями Rust. Вывод (данных) может немного отличаться в разных версиях, поскольку Rust часто улучшает сообщения об ошибках и предупреждениях. Другими словами, любая более новая, стабильная версия
    Rust, устанавливаемая с помощью этих шагов, должна работать в соответствии с содержанием этой книги.
    Условные обозначения командной строки
    В этой главе и на протяжении всей книги мы демонстрируем команды в терминале.
    Все строки, которые вы должны вводить в терминал, начинаются с
    $
    . Вам не нужно вводить символ
    $
    ; это указатель командной строки, отображаемый для указания начала каждой команды. Строки, не начинающиеся с
    $
    , обычно показывают результат предыдущей команды. Кроме того, в примерах, специфичных для
    PowerShell, будет использоваться
    >
    вместо
    $
    Установка rustup на Linux или macOS
    Если вы используете Linux или macOS, пожалуйста, выполните следующую команду:
    Команда скачивает скрипт и начинает установку инструмента rustup
    , одновременно с установкой последней стабильной версии Rust. Вас могут запросить ввести локальный пароль. При успешной установке вы увидите следующий вывод:
    $
    curl --proto
    '=https'
    --tlsv1.3 https://sh.rustup.rs -sSf | sh
    Rust is installed now. Great!

    Вам также понадобится компоновщик - программа, которую Rust использует для объединения своих скомпилированных выходных данных в один файл. Скорее всего, он у вас уже есть. При возникновении ошибок компоновки, вам следует установить компилятор C, который обычно будет включать в себя и компоновщик. Компилятор C
    также полезен, потому что некоторые распространённые пакеты Rust зависят от кода C и нуждаются в компиляторе C.
    На macOS вы можете получить компилятор C, выполнив команду:
    Пользователи Linux, как правило, должны устанавливать GCC или Clang в соответствии с документацией их дистрибутива. Например, при использовании Ubuntu можно установить пакет build-essential
    Установка rustup на Windows
    В Windows перейдите на https://www.rust-lang.org/tools/install и следуйте инструкциям по установке Rust. В какой-то момент установки вы получите сообщение о том, что вам также потребуются инструменты сборки MSVC для Visual Studio 2013 или более поздней версии. Чтобы получить инструменты сборки, вам необходимо установить
    Visual Studio
    2022
    . Когда вас спросят, что именно установить, укажите:
    “Desktop Development with C++”
    The Windows 10 or 11 SDK
    Английский языковой пакет вместе с любым другим языковым пакетом по вашему выбору.
    В остальной части этой книги используются команды, которые работают как в cmd.exe,
    так и в PowerShell. При наличии специфических различий мы объясним, что необходимо сделать в таких случаях.
    Устранение возможных ошибок
    Чтобы проверить, правильно ли у вас установлен Rust, откройте оболочку и введите эту строку:
    Вы должны увидеть номер версии, хэш коммита и дату выпуска последней стабильной версии в следующем формате:
    $
    xcode-select --install
    $
    rustc --version rustc x.y.z (abcabcabc yyyy-mm-dd)

    Если вы видите эту информацию, вы успешно установили Rust! Если вы не видите эту информацию, убедитесь, что Rust находится в вашей системной переменной
    %PATH%
    следующим образом:
    В Windows CMD:
    В PowerShell:
    В Linux и macOS:
    Если все правильно, а Rust по-прежнему не работает, есть несколько мест, где вы можете получить помощь. Самый простой — это канал #beginners на официальном канале Rust в
    Discord
    . Там вы можете пообщаться с другими rustaceans (глупое прозвище, которым мы называем себя), которые могут вам помочь. Другие замечательные ресурсы включают форум пользователей и
    Stack Overflow
      1   2   3   4   5   6   7   8   9   ...   62


    написать администратору сайта