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

Используя rustup (рекомендуется)

Кажется у вас запущена macOS, Linux или другая Unix-подобная ОС. Для загрузки Rustup и установки Rust, запустите следующее в вашем терминале и следуйте инструкциям на экране.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Похоже, вы работаете под управлением Windows. Чтобы начать использовать Rust, загрузите установщик, затем запустите программу и следуйте инструкциям на экране. Возможно, Вам потребуется установитьVisual Studio C++ Build tools при появлении соответствующего запроса. Если вы не работаете в Windows, смотрите «другие методы установки».

Windows Subsystem for Linux

Если вы используете Windows Subsystem for Linux, для установки Rust запустите следующее в вашем терминале и затем следуйте инструкциям на экране.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Если вы используете Unix, такой как WSL, Linux или macOS, то для установки Rust
запустите следующую команду в вашем терминале и следуйте инструкциям на экране.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


Если у вас запущен Windows,
скачайте и запустите rustup‑init.exe, а затем следуйте инструкциям на экране.

Примечания об установке Rust

Начало работы

Если вы только начали работать с Rust и хотите более глубокого погружения, посмотрите страницу о начале работы.

Особенности Windows

На Windows, Rust дополнительно требует инструменты сборки C++ для Visual Studio 2013 или более поздней версии. Самый простой способ получить эти инструменты — это установка

Microsoft Visual C++ Build Tools 2019
, которая предоставляет только инструменты сборки Visual C++. В качестве альтернативы этому способу, вы можете установить
Visual Studio 2019, Visual Studio 2017, Visual Studio 2015 или Visual
Studio 2013 и в процессе установки выбрать «C++ tools».

Для получения дополнительной информации о настройке Rust в Windows, смотрите

Windows-специфичную документацию rustup.

Управление инструментами с rustup

Rust устанавливается и управляется при помощи
rustup. Rust имеет 6-недельный

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

Если вы ранее устанавливали rustup, то вы можете обновить инструменты разработчика запустив rustup update.

Для дополнительной информации смотрите

документацию по rustup.

Настройка переменной окружения PATH

В среде разработки Rust, все инструменты устанавливаются в директорию

~/.cargo/bin


%USERPROFILE%\.cargo\bin
, где вы можете найти набор инструментов Rust,
включая rustc, cargo и rustup.

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

Если после установки запуск команды rustc --version в консоли
терпит неудачу, это может быть наиболее вероятной причиной.

Удалить Rust

Если вы по какой-то причине хотите удалить Rust, вы можете запустить
rustup self uninstall.
Нам будет тебя не хватать!

Другие методы установки

Для большинства разработчиков, процесс установки, при помощи rustup, описанный выше, является предпочтительным способом установки Rust. Однако, Rust также может быть установлен при помощи других методов.

Узнайте больше

Вы можете установить Rust, просто скачав инсталлятор и дважды кликнув по нему. Хотя разработчикам, имеющим дело с более сложными инструментами, или тем, кому нужно собирать «небезопасные» (unsafe) C/C++ библиотеки из исходников, предстоит сделать немного больше. Тем не менее, если проявить немного упорства, разобраться в этом вполне реально.

Во время всего этого процесса следите за тем, что вы устанавливаете правильную версию библиотек: в данный момент для MSVC доступна только 64-битная версия Rust. Вы будете то и дело получать странные ошибки, если попробуете использовать 32-битные библиотеки. Поверьте мне.

Повторюсь: если вам нужен компилятор Rust, идите на официальный сайт и жмите «Install». Если же вы планируете работать с нативными C/C++ библиотеками, читайте дальше!

Rust на Windows – что нам понадобится

Компилятор С

Вы можете выбрать GCC, но это повлечёт за собой использование MSYS и MinGW. Пытаясь настроить MSYS2 для Windows, я обжигался несчётное количество раз, так что теперь предпочитаю избегать этот вариант. Вместо этого я использую компилятор Microsoft. Вы можете получить MSVC по одной из этих ссылок:

  • Microsoft Visual C++ Build Tools 2015 Technical Preview (Microsoft Visual C++ Build Tools 2015 Technical Preview)
  • Visual Studio 2015 (Visual Studio 2015)
    Примечание: уже доступна релизная версия Build Tools 2015.

Оба варианта хороши – Microsoft сделали Visual C++ бесплатным для разработки открытого программного обеспечения. По крайней мере, он был таким на момент написания этой статьи (2016-03-22).
Примечание переводчика: Visual Studio Community бесплатна не только для проектов с открытым кодом, но и для индивидуальных разработчиков, академических исследований, обучения и небольших компаний. Подробнее.

Перейдем к трудной части: вам потребуется заставить магию Visual C++ работать в вашем окружении. Для облегчения этой задачи в Visual C++ существует много переменных окружения и сложных установочных скриптов. Можно использовать командную оболочку, которую Microsoft предоставляет вместе с VS and VC++ (Visual C++ 2015 x64 Native Build Tools Command Prompt). Всё, о чём речь пойдёт ниже, будет работать, если вы выберете эту опцию.

Я применяю cmder, который использует PowerShell, поэтому, чтобы заставить инструменты командной строки работать в моем окружении, мне пришлось преодолеть еще одну преграду. Я выбрал рецепт Retain Changes to Environment Variables Set by a Batch File из книги PowerShell Cookbook (вам обязательно нужно купить ее, если вам нравится этот пример кода, в ней вы найдете много строк кода на PowerShell, который не придется писать самостоятельно). В любом случае, после сохранения рецепта в файл я добавил в мой PowerShell профиль следующее:

Invoke-CmdScript.ps1 "C:\Program Files (x86)\Microsoft Visual C++ Build Tools\vcbuildtools.bat" amd64

OpenSSL

Если вы хотите использовать Rust в качестве серверного языка для веб-разработки, вам понадобится OpenSSL. Win32 OpenSSL Installation Project поддерживает несколько инсталляторов. Перейдите по ссылке и пролистайте до “Download Win32 OpenSSL”. Выберите 64-битную версию OpenSSL (не Light). Установите ее.

Вам покажут сообщение «Поддержите нас, ведь мы работаем бесплатно». Я поддержал. Если вы продолжите использовать OpenSSL для Windows, возможно, вам тоже стоит пожертвовать деньги. Поставьте себе напоминание, и, если через месяц вы ещё будете работать с этой библиотекой, сделайте это.

Переменные окружения OpenSSL

Убедитесь в том, что компилятор видит OpenSSL. Вам следует настроить следующие переменные окружения:

DEP_OPENSSL_INCLUDE=C:\OpenSSL-Win64\include
OPENSSL_INCLUDE_DIR=C:\OpenSSL-Win64\include
OPENSSL_LIB_DIR=C:\OpenSSL-Win64\lib\VC
OPENSSL_LIBS=ssleay32MT:libeay32MT

Очевидно, это подразумевает, что вы поместили OpenSSL в стандартную директорию установки C:\OpenSSL-Win64.

Freetype

C инструкциями по настройке Freetype для работы c MSVC вы можете ознакомиться здесь.

Установка Rust на Windows

Можно пойти двумя путями: используя инсталлятор Rust или multirust.

Инсталлятор Rust

Зайдите на страницу загрузки Rust и скачайте инсталлятор MSVC ABI.

Так вы получите одну из версий Rust (например, 1.7.0). Когда появятся новые версии языка, вам придется решить, хотите ли вы обновиться и, как следствие, поменять одну или несколько переменных окружения. Это несложно, но, поскольку релизы Rust выпускаются раз в шесть недель, возможно, вас немного утомят частые изменения языка.

Rustup

Rustup – это инструмент для поддержания нескольких версий Rust на одной операционной системе. Благодаря ему вы сможете использовать различные версии Rust для разных проектов и даже потестировать новые возможности в ночной версии!

Теперь посетите сайт rustup.rs и скачайте текущий инсталлятор. После загрузки дважды кликните по нему и подождите. Когда она завершится, откройте новый терминал и запустите rustup default stable-x86_64-stable.

Нам нужно убедиться, что переменная окружения установлена. Думаю, вы знаете, где ее искать. Проверьте PATH, чтобы увидеть, был ли добавлен путь ~/.cargo/bin. Я использую ~ для обозначения вашей домашней директории. У себя на компьютере я проверяю, есть ли C:\Users\jeremiah\.cargo\bin в PATH. Если нет, добавьте его.

Дополнительные инструменты Rust

На этом этапе у нас уже установлена рабочая версия Rust. Мы можем начать использовать rustc и cargo для разработки программного обеспечения. Однако, мы можем установить дополнительные инструменты, чтобы облегчить себе работу.

Исходный код Rust

Вы можете с ним ознакомиться, но сейчас мы просто хотим использовать его для некоторых дополнительных инструментов. Зайдите на страницу загрузок Rust и скачайте исходники. Это файл .tar.gz, так что вам может понадобиться что-то вроде 7-zip. Выбор конкретной программы я оставлю за вами.

Загрузив исходный код, извлеките его в директорию, которую вы случайно не удалите. Я выбрал src в моей домашней директории и могу найти исходники Rust так: C:\users\jeremiah\src\rust-1.7.0. Снова откройте переменные окружения, создайте новую переменную RUST_SRC_PATH и запишите в неё путь к исходному коду Rust.

Racer

Racer обеспечивает автодополнение кода в инструментах разработки программного обеспечения. Он может быть весьма полезным, если вы изучаете язык или разбираете код, пытаясь понять, какие параметры принимает функция. Если вы добавили .cargo\bin в PATH и задали переменную окружения RUST_SRC_PATH, установить Racer будет очень легко. Просто запустите cargo install racer и подождите.

rustfmt

rustfmt форматирует код на Rust. Он вам здорово поможет в работе. Не то чтобы вы не могли сами правильно форматировать код, но эта программа следит за соблюдением единого стиля. Спорить о форматировании кода не стоит. Избегайте этого.

cargo install rustfmt

ГОТОВО!

Редактор

Лично я использую Visual Studio Code. Я слышал, что Sublime Text с недавних пор хорошо работает с Rust. Также этот язык поддерживается в Atom и других редакторах.

На странице Racer вы можете найти ссылки на инструкции по работе с разными редакторами. В Visual Studio Code я установил только расширения Rusty Code и vsc-rustfmt.

Примечание переводчика: мне Visual Studio Code не очень понравилась, так что было много надежд на расширение VisualRust для Visual Studio. К сожалению, на данный момент это расширение не поддерживает Cargo.

Как-то сложно!

Вам может показаться, что этот путь слишком длинный, но пройти его довольно легко и, честно говоря, это быстрее, чем ждать, пока установится Visual Studio и 90 других зависимостей.

Общий обзор языка программирования Rust. Установка

Последнее обновление: 23.04.2024

Rust представляет язык программирования, разработанный в компании Mozilla для большей производительности и безопасности. Его сфера применения довольнно широка.
Благодаря производительности его можно использовать на низком уровне в системном программировании — операционные системы, драйверы, встроенные системы. Но также
его можно использовать для написания прикладных программ и веб-приложений.

На сегодняшний день довольно много компаний применяют Rust в своих разработках. В частности, достаточно назвать такие, как Dropbox, Microsoft, Google, Mozilla, Coursera,
Amazon, Discord, Deno. Так, в последнее время Microsoft постепенно стал различные компоненты Windows с C/C++ на Rust. Аналогично компания Google стала внедрять Rust в код ОС Android.
Также постепенно Rust находит свое применение в коде Linux.

Некоторые особенности языка Rust:

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

  • В плане синтаксиса Rust более или менее напоминает сиподобные языки, в частности, С/С++. Поэтому тем, кто знаком с каким-то сиподобным языком, особенно, если это
    C или C++ будет проще при знакомстве с синтаксисом Rust.

  • Имеющаяся в Rust система управления памятью в отличие от C/C++ позволяет более безопасно работать с памятью и при этом одновременно позволяет писать высокопроизводительный код.
    Эта система не использует сборщики мусора, что позволяет избежать связанных со сборщиком мусора накладных расходов. Система управления памятью в Rust а базируется на таких понятиях как «владение» (ownership) и «заимствование» (borrowing). В частности, для некоторого кусочка данных в один момент времени может быть только один владелец.

  • Разыменование нулевого указателя (в С/С++) или работа со значениями null является одним из распространенных источников ошибок во многих языках программирования.
    Rust частично решает эту проблему благодаря модели владения и строгой системе типов.

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

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

  • С помощью инфраструктуры FFI (Foreign Function Interface) Rust может взаимодействовать с библиотеками, написанными на C/C++.

История развития

Изначальный автор языка — Грейдон Хоар (Graydon Hoare), который начал развивать Rust как личный проект в 2006 году и который работал в компании
Mozilla. В 2009 году Mozilla начала спонсоровать проект.

Первая стабильная версия языка — Rust 1.0 вышла 15 мая 2015 года. На момент написания данной статьи последней версией является версия Rust 1.76.

8 февраля 2021 года пятью компаниями (AWS, Huawei, Google, Microsoft и Mozilla) была образована независимая некоммерческая организация
Rust Foundation, основной задаче которой является поддержание языка Rust и развитие его экосистемы.

Стоит отметить, что Rust также является opensource-проектом — весь связанный с ним код можно найти в репозитории на github — https://github.com/rust-lang

Установка для Windows

Для установки необходимого инструментария для программирования на языке Rust перейдем на страницу
https://www.rust-lang.org/tools/install.
Найдем на странице кнопку Download Rustup-init.exe (64-bit), если у нас 64-битная версия (как в большинстве случаев),
либо Download Rustup-init.exe (32-bit) (если система 32-х битная):

Установка Rust и Rustup на Windows

Стоит отметить, что перед установкой инфраструктуры Rust на Windows также должeн быть установлен пакет Microsoft C++ Build Tools. В программе установки надо выбрать пункт
«Разработка классических приложений на C++» (Desktop development with C++). Подробнее про установку можно посмотреть в статье
Установка Microsoft C++ Build Tools

После нажатия на кнопку на компьютер будет загружен файл установщика. После загрузки нажмем на этот файл:

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  C:\Users\eugen\.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

  C:\Users\eugen\.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  C:\Users\eugen\.cargo\bin

This path will then be added to your PATH environment variable by
modifying the HKEY_CURRENT_USER/Environment/PATH registry key.

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-pc-windows-msvc
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

Установщик предложит нам на выбор три опции. Опция с номером 1 представляет установку. Поэтому введем единицу:

Current installation options:


   default host triple: x86_64-pc-windows-msvc
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

info: profile set to 'default'
info: default host triple is x86_64-pc-windows-msvc
warning: Updating existing toolchain, profile choice will be ignored
info: syncing channel updates for 'stable-x86_64-pc-windows-msvc'
699.0 KiB / 699.0 KiB (100 %) 431.4 KiB/s in  2s ETA:  0s
info: latest update on 2024-02-04, rust version 1.76.0 (07dca489a 2024-02-04)

И начнется загрузка и установка всех необходимых пакетов. В конце программа установки радостно нам сообщит, что Rust успешно установлен, и предложит нам нажать на Enter для завершения работы мастера установки:

info: installing component 'rust-std'
 20.5 MiB /  20.5 MiB (100 %)   4.1 MiB/s in  4s ETA:  0s
info: installing component 'rustc'
 59.0 MiB /  59.0 MiB (100 %)   4.6 MiB/s in 12s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-pc-windows-msvc'

  stable-x86_64-pc-windows-msvc updated - rustc 1.76.0 (07dca489a 2024-02-04)

Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload its PATH environment variable to include
Cargo's bin directory (%USERPROFILE%\.cargo\bin).

Press the Enter key to continue.

Нажмем на Enter, и все — мы можем приступать к созданию программ на Rust.

Установка для Mac OS и Linux

Для установки необходимого инструментария для программирования на языке Rust на Mac OS/Linux (в том числе для Windows Subsystem for Linux) в терминале необходимо выполнить команду:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

А весь процесс установки будет выглядеть аналогично. Сначала установщик предложит нам выбрать одну из опций (выберем опцию 1 — установку):

eugene@Eugene:~$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/eugene/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

  /home/eugene/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /home/eugene/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/eugene/.profile
  /home/eugene/.bashrc

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation
> 1

Также установщик выведет полную сводку по загружаемым и устанавливаемым пакетам и после установки предложит ввести команду source «$HOME/.cargo/env»:

info: installing component 'rustc'
 61.6 MiB /  61.6 MiB (100 %)  15.3 MiB/s in  4s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.76.0 (07dca489a 2024-02-04)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.

This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish"  # For fish
eugene@Eugene:~$ 

После окончания установки для конфигурации введем преложенную команду . «$HOME/.cargo/env» (на некоторых системах команда может быть source «$HOME/.cargo/env»).

This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish"  # For fish
eugene@Eugene:~$ . "$HOME/.cargo/env"
eugene@Eugene:~$ 

Офлайн-установка

При необходимости также можно выполнить офлайн-установку с помощью одного из установщиков для каждой из поддерживаемых операционных систем и архитектур со странице https://forge.rust-lang.org/infra/other-installation-methods.html

Версия и обновление Rust

Стоит отметить, что постоянно выходят новые подверсии Rust, и чтобы обновить необходимый инструментарий, необходимо в консоли набрать следующую команду:

rustup update

Проверить номер текущей установленной версии можно с помощью следующей команды rustc —version:

rustc --version
C:\rust>rustc --version
rustc 1.76.0 (07dca489a 2024-02-04)

C:\rust>

Создадим парочку простых приложений на популярном языке программирования. Только учитесь работать с Rust? Эта статья для вас!

Как установить Rust на компьютер

Язык Rust сейчас становится все более популярным, и разработчики позаботились, чтобы процесс его установки был максимально простым. На официальном сайте имеется простая инструкция для пользователей GNU/Linux и macOS, следуя которой, можно буквально за один шаг установить Rust на свой компьютер. Нужно просто скопировать и вставить вот эту команду в терминал:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

После вставки команды нажимаем на Enter и ждем, пока скрипт закончит выполняться. В результате в системе появится все необходимое для сборки и выполнения программ, написанных на Rust. Пользователям Windows придется следовать другой инструкции. Для проверки того, что все компоненты установлены как положено, можно воспользоваться такой командой:

cargo --version

Если все в порядке, то вывод должен быть примерно таким:

[alex@alex-pc ~]$ cargo --version
cargo 1.80.1 (376290515 2024-07-16)
[alex@alex-pc ~]$

Это значит, что Rust и система сборки Cargo были успешно установлены.

Пишем простое консольное приложение

Для создания простейшего консольного приложения нам не потребуется вручную создавать всю структуру файлов и папок. Разработчики и здесь позаботились об удобстве пользователей, создав систему сборки Cargo. С ее помощью можно создавать, собирать и запускать свои проекты.

Но Cargo помимо этого может еще и загружать необходимые для работы программы пакеты (зависимости). Так что это не только система сборки, но еще и менеджер пакетов. Чтобы создать, например, проект под названием hello-rust при помощи Cargo, в терминале вводим такую команду:

cargo new hello-rust

В результате выполнения этой команды в домашней директории должна появиться папка с именем hello-rust, в которой содержатся все файлы проекта. Найдем в ней файл main.rs, расположенный в подпапке src. Он имеет такое содержимое (открыть его можно в любом удобном текстовом редакторе):

fn main() {
    println!("Hello, world!");
}

Функция main — это точка входа, самая главная функция, с которой начинается выполнение программы. В данном примере вся ее работа заключается в выведении одной-единственной строки «Hello, world!» в консоли. Чтобы запустить программу, надо сначала открыть терминал в папке проекта и ввести в нем следующее:

cargo run

После этого вывод терминала должен быть примерно такой:

[alex@alex-pc hello-rust]$ cargo run
  Compiling hello-rust v0.1.0 (/home/alex/hello-rust)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.03s
    Running `target/debug/hello-rust`
Hello, world!
[alex@alex-pc hello-rust]$ 

Как видим, программа успешно запустилась. Теперь давайте рассмотрим более сложную программу. Для примера возьмем игру в угадывание числа. В этой игре компьютер загадывает число, а пользователь пытается его угадать. Новый проект назовем, например, guessing-game. Для создания проекта воспользуемся командой cargo new guessing-game. 

Вот так выглядит исходник игры:

use rand::Rng;
use std::cmp::Ordering;
use std::io;

fn main() {
    println!("Загадано число от 1 до 100. Угадай число!");

    let secret_number = rand::thread_rng().gen_range(1..=100);

    loop {
        println!("Введите ваше число.");

        let mut guess = String::new();

        io::stdin()
            .read_line(&mut guess)
            .expect("Не удалось прочитать строку");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        println!("Вы ввели: {guess}");

        match guess.cmp(&secret_number) {
            Ordering::Less => println!("Мое число больше!"),
            Ordering::Greater => println!("Мое число меньше!"),
            Ordering::Equal => {
                println!("Вы угадали!");
                break;
            }
        }
    }
}

Весь этот исходник нужно поместить в файл main.rs. Но также придется дополнить файл Cargo.toml. В нем надо дописать одну строку для добавления пакета rand в разделе зависимостей (dependencies). После редактирования файл должен выглядеть так:

[package]
name = "guessing-game"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.9.0-alpha.2"

Пакет rand нужен для генерации случайного числа, которое следует угадывать. Само число после генерации записывается в переменную secret_number. Генерируется число от 1 до 100. Далее идет цикл loop, в котором содержится весь остальной код. Выйти из цикла можно только, если число будет угадано. Программа дает подсказки в процессе угадывания.

Все подсказки прописаны в конструкции match, которая находится в конце цикла. Это оператор выбора, и в нем происходит сравнение загаданного числа с тем числом, которое ввел пользователь. В зависимости от результата сравнения пользователь получает то или иное сообщение. Если числа оказались равны, то выводится сообщение о победе и программа завершает свою работу. 

В программе есть еще один оператор match, расположенный в середине цикла. Он нужен для проверки корректности ввода. То есть если пользователь вдруг ввел что-то кроме цифр, то этот оператор не позволит выполняться следующим после себя строкам, а передаст управление в начало цикла. Вследствие этого пользователь снова получает предложение ввести свое число.

Перед запуском сначала можно собрать проект командой cargo build, а потом запустить при помощи cargo run. Первая команда установит все необходимые зависимости и произведет сборку проекта. Но никто не запрещает сразу же скомандовать cargo run. В этом случае все равно будут автоматически подтянуты все зависимости и после всей цепочки компиляций проект будет успешно запущен. Ниже приводится пример работы программы:

[alex@alex-pc guessing-game]$ cargo run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.05s
    Running `target/debug/guessing-game`
Загадано число от 1 до 100. Угадай число!
Введите ваше число.
50
Вы ввели: 50
Мое число меньше!
Введите ваше число.
40
Вы ввели: 40
Мое число меньше!
Введите ваше число.
30
Вы ввели: 30
Мое число меньше!
Введите ваше число.
20
Вы ввели: 20
Мое число больше!
Введите ваше число.
25
Вы ввели: 25
Мое число больше!
Введите ваше число.
26
Вы ввели: 26
Мое число больше!
Введите ваше число.
27
Вы ввели: 27
Вы угадали!
[alex@alex-pc guessing-game]$ 

Далее расскажем, как создавать программы с графическим интерфейсом.

Пишем простое приложение с GUI

Аббревиатура GUI расшифровывается как Graphical User Interface, что в переводе означает графический интерфейс пользователя. По-другому приложения с графическим интерфейсом называют оконными, и, в отличие от консольных, они более привычные и удобные для большинства пользователей.

Для создания приложения с GUI мы будем использовать библиотеку iced. Писать будем простое приложение под названием Counter («Счетчик»), которое хорошо проиллюстрирует принцип создания несложного интерфейса на iced.

Первым делом создаем проект при помощи уже известной команды:

cargo new counter

Далее отредактируем файл Cargo.toml, приведя его в такой вид:

[package]
name = "counter"
version = "0.1.0"
edition = "2021"

[dependencies]
iced.workspace = true

Последняя строчка показывает, что нужно установить пакет iced в качестве зависимости. Теперь займемся исходником программы. Откроем файл main.rs и вставим в него следующее:

use iced::widget::{button, row, text, Row};
use iced::Center;

pub fn main() -> iced::Result {
    iced::run("Counter", Counter::update, Counter::view)
}

#[derive(Default)]
struct Counter {
    value: i64,
}

#[derive(Debug, Clone, Copy)]
enum Message {
    Increment,
    Decrement,
}

impl Counter {
    fn update(&mut self, message: Message) {
        match message {
            Message::Increment => {
                self.value += 1;
            }
            Message::Decrement => {
                self.value -= 1;
            }
        }
    }

    fn view(&self) -> Row<Message> {
        row![
            button("-").on_press(Message::Decrement),
            text(self.value).size(50),
            button("+").on_press(Message::Increment)
        ]
        .padding(20)
        .spacing(10)
        .align_y(Center)
    }
}

Что мы здесь видим? Функция main содержит всего одну строку. В этой строке вызывается функция run из пакета iced, которая собственно и запускает программу. В качестве параметров этой функции передаются функции update и view. Первая нужна для логики обновления, когда что-либо изменяется в приложении, а вторая описывает графический интерфейс приложения. 

Что касается интерфейса, то здесь все просто. В функции view содержится контейнер Row, в котором размещается ряд виджетов: кнопка со знаком минус, за ней текстовая область и еще одна кнопка, но уже со знаком плюс. Контейнер располагает виджеты горизонтально. Последние три строки в функции view — это свойства. примененные к контейнеру. Свойство padding задает отступы по краям, spacing — отступы внутри контейнера (между его секциями), align_y — выравнивание по вертикали.

Взаимодействия между компонентами программы происходят посредством сообщений (message). Мы видим, что для каждой кнопки с помощью функции on_press прописано необходимое действие. При нажатии на плюс число в текстовой области между кнопками должно увеличиться, а при нажатии на минус — уменьшиться.

Нажатия в виде сообщений передаются в функцию update. В этой функции присутствует оператор выбора match, который определяет, какое именно сообщение пришло, и в зависимости от сообщения выполняет то или иное действие (увеличивает или уменьшает переменную value на единицу).

Запустить программу можно также через команду cargo run. Ниже представлены несколько скриншотов запущенной программы:

Задание для самостоятельного выполнения

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

Решение

Для изменения расположения виджетов с горизонтального на вертикальный нужно вместо контейнера Row использовать Column. Также придется заменить свойство align_y на align_x (выравнивание по горизонтали), так как для Column свойство align_y не определено. Еще неплохо бы поменять кнопки местами, чтобы плюс был сверху, а минус снизу. В общем, код должен быть такой:

use iced::widget::{button, column, text, Column};
use iced::Center;

pub fn main() -> iced::Result {
    iced::run("Counter", Counter::update, Counter::view)
}

#[derive(Default)]
struct Counter {
    value: i64,
}

#[derive(Debug, Clone, Copy)]
enum Message {
    Increment,
    Decrement,
}

impl Counter {
    fn update(&mut self, message: Message) {
        match message {
            Message::Increment => {
                self.value += 1;
            }
            Message::Decrement => {
                self.value -= 1;
            }
        }
    }

    fn view(&self) -> Column<Message> {
        column![
            button("+").on_press(Message::Increment),
            text(self.value).size(50),
            button("-").on_press(Message::Decrement)
        ]
        .padding(20)
        .spacing(10)
        .align_x(Center)
    }
}

Внешний вид программы:

Полезные ссылки

Подробнее о языке Rust

Книга о Rust на русском языке

Rust на примерах

Примеры с iced

The first step is to install Rust. We’ll download Rust through rustup, a
command line tool for managing Rust versions and associated tools. You’ll need
an internet connection for the download.

Note: If you prefer not to use rustup for some reason, please see the
Other Rust Installation Methods page for more options.

The following steps install the latest stable version of the Rust compiler.
Rust’s stability guarantees ensure that all the examples in the book that
compile will continue to compile with newer Rust versions. The output might
differ slightly between versions because Rust often improves error messages and
warnings. In other words, any newer, stable version of Rust you install using
these steps should work as expected with the content of this book.

Command Line Notation

In this chapter and throughout the book, we’ll show some commands used in the
terminal. Lines that you should enter in a terminal all start with $. You
don’t need to type the $ character; it’s the command line prompt shown to
indicate the start of each command. Lines that don’t start with $ typically
show the output of the previous command. Additionally, PowerShell-specific
examples will use > rather than $.

Installing rustup on Linux or macOS

If you’re using Linux or macOS, open a terminal and enter the following command:

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

The command downloads a script and starts the installation of the rustup
tool, which installs the latest stable version of Rust. You might be prompted
for your password. If the install is successful, the following line will appear:

Rust is installed now. Great!

You will also need a linker, which is a program that Rust uses to join its
compiled outputs into one file. It is likely you already have one. If you get
linker errors, you should install a C compiler, which will typically include a
linker. A C compiler is also useful because some common Rust packages depend on
C code and will need a C compiler.

On macOS, you can get a C compiler by running:

$ xcode-select --install

Linux users should generally install GCC or Clang, according to their
distribution’s documentation. For example, if you use Ubuntu, you can install
the build-essential package.

Installing rustup on Windows

On Windows, go to https://www.rust-lang.org/tools/install and follow
the instructions for installing Rust. At some point in the installation, you’ll
be prompted to install Visual Studio. This provides a linker and the native
libraries needed to compile programs. If you need more help with this step, see
https://rust-lang.github.io/rustup/installation/windows-msvc.html

The rest of this book uses commands that work in both cmd.exe and PowerShell.
If there are specific differences, we’ll explain which to use.

Troubleshooting

To check whether you have Rust installed correctly, open a shell and enter this
line:

$ rustc --version

You should see the version number, commit hash, and commit date for the latest
stable version that has been released, in the following format:

rustc x.y.z (abcabcabc yyyy-mm-dd)

If you see this information, you have installed Rust successfully! If you don’t
see this information, check that Rust is in your %PATH% system variable as
follows.

In Windows CMD, use:

> echo %PATH%

In PowerShell, use:

> echo $env:Path

In Linux and macOS, use:

$ echo $PATH

If that’s all correct and Rust still isn’t working, there are a number of
places you can get help. Find out how to get in touch with other Rustaceans (a
silly nickname we call ourselves) on the community page.

Updating and Uninstalling

Once Rust is installed via rustup, updating to a newly released version is
easy. From your shell, run the following update script:

$ rustup update

To uninstall Rust and rustup, run the following uninstall script from your
shell:

$ rustup self uninstall

Local Documentation

The installation of Rust also includes a local copy of the documentation so
that you can read it offline. Run rustup doc to open the local documentation
in your browser.

Any time a type or function is provided by the standard library and you’re not
sure what it does or how to use it, use the application programming interface
(API) documentation to find out!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Acer aspire не запускается windows
  • Как изменить обложку трека на windows
  • Directx uninstaller windows 11
  • Windows 11 taskbar height
  • Как сохранить файлы при установке windows 10 с флешки