Как установить rust на windows 10

Обновлено: 07.07.2024

Первым шагом является установка Rust. Мы загрузим Rust, используя инструмент командной строки rustup , предназначенный для управлениями версиями Rust и другими связанными с ним инструментами. Вам понадобится интернет соединение для его загрузки.

Замечание: Если вы предпочтёте не использовать rustup по какой-то причине, пожалуйста, ознакомьтесь с другими вариантами на с странице the Rust installation page.

Нотация командной строки

В данной главе и потом во всей книге мы покажем некоторые команды в терминале командной строки. Строки, которые нужно ввести в терминале, начинаются с $ . Вам не нужно вводить сам символ $ ; он только отображает, что это начало каждой команды. Строки, которые НЕ начинаются с $ , обычно показывают вывод предыдущей команды. В дополнение, специфичные для PowerShell примеры используют символ > вместо символа $ .

Установка rustup на Linux или macOS

Если вы используете Linux или macOS, пожалуйста, выполните следующую команду:

Команда скачивает скрипт и начинает установку инструмента rustup , одновременно с установкой последней стабильной версии Rust. Вас могут запросить ввести локальный пароль. При успешной установке вы увидите следующий вывод:

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

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

Остальные часть этой книги используют команды, работающие как в cmd.exe, так и в PowerShell. Есть некоторые отличия, которые мы объясним.

Обновление и удаление

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

Чтобы удалить Rust и rustup , выполните
следующую команду:

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

Чтобы проверить, правильно ли у вас установлен Rust, откройте оболочку и введите эту строку:

Вы должны увидеть номер версии, хэш коммита и дату выпуска последней стабильной версии в следующем формате:

Локальная документация

Установка Rust также включает локальную копию документации, поэтому вы можете читать её в автономном режиме. Запустите rustup doc , чтобы открыть локальную документацию в вашем браузере.

Каждый раз, когда тип или функция предоставляется из стандартной библиотеки и вы не знаете, что они делают или как их использовать, используйте документацию по интерфейсу прикладного программирования (API), чтобы узнать это!

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

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

Windows Subsystem for Linux

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

Rust запускается на Windows, Linux, macOS, FreeBSD и NetBSD. Если вы используете одну из этих платформ и видите это, то пожалуйста, сообщите о проблеме и следующих значениях:

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

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

Если у вас запущен 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 также может быть установлен при помощи других методов.

В разделе Общие сведения о разработке в Windows с помощью Rust мы ознакомили вас с языком Rust и рассказали, что это такое и из чего состоит. В этом разделе мы настроим среду разработки.

Рекомендуется выполнять разработку Rust в среде Windows. Однако если вы планируете локальную компиляцию и тестирование в Linux, разработку можно также выполнять с помощью Rust в подсистеме Windows для Linux (WSL).

Установка Visual Studio (рекомендуется) или Microsoft C++ Build Tools

В Windows для Rust требуются определенные инструменты сборки C++.

Можно скачать Microsoft C++ Build Tools или просто установить Microsoft Visual Studio (рекомендуется).

Использование Microsoft C ++ Build Tools или Visual Studio Build Tools требует наличия действующей лицензии Visual Studio (Community, Pro или Enterprise).

В качестве интегрированной среды разработки (IDE) для Rust мы будем использовать Visual Studio Code, а не Visual Studio. Но вы по-прежнему можете установить Visual Studio. Доступен выпуск Community Edition — он предоставляется бесплатно для учащихся, участников проектов с открытым кодом и отдельных пользователей.

Для новых проектов Rust по умолчанию используется Git. Поэтому также добавьте в набор отдельный компонент Git для Windows (используйте поле поиска, чтобы найти его по имени).

Разработка классических приложений .NET, разработка классических приложений C++ и разработка для универсальной платформы Windows

Установка Rust

Теперь установите Rust с веб-сайта Rust. Веб-сайт обнаружит, что вы используете Windows, и предложит вам 64- 32-разрядные установщики инструмента rustup для Windows, а также инструкции по установке Rust в подсистеме Windows для Linux (WSL).

Rust очень хорошо работает в Windows. Поэтому нет необходимости использовать WSL (если вы не планируете локальную компиляцию и тестирование в Linux). Так как у вас Windows, рекомендуется просто запустить установщик rustup для 64-разрядной версии Windows. Затем все будет настроено для записи приложений для Windows с помощью Rust.

После завершения работы установщика Rust все будет готово к программированию с помощью Rust. У вас еще не будет удобной интегрированной среды разработки (это будет рассмотрено в следующем разделе, —Установка Visual Studio Code). И вы еще не настроили среду для вызова интерфейсов API Windows. Однако вы можете запустить командную строку ( cmd.exe ) и, возможно, ввести команду cargo --version . Если отобразился номер версии, это подтверждает, что Rust установлен правильно.

Если вы хотите узнать, что за ключевое слово cargo мы использовали выше, то Cargo — это название инструмента в среде разработки Rust, который управляет проектами (а точнее, пакетами) и их зависимостями.

Если вы действительно хотите углубиться в программирование на этом этапе (даже без удобства интегрированной среды разработки), то можете прочитать раздел Hello, World! книги по языку программирования Rust на веб-сайте Rust.

Установка Visual Studio Code

Применяя Visual Studio Code (VS Code) в качестве текстового редактора или интегрированной среды разработки (IDE), можно использовать преимущества языковых служб, такие как завершение кода, выделение синтаксиса, форматирование и отладка.

VS Code также содержит встроенный терминал, позволяющий вводить аргументы командной строки (например, вводить команды для Cargo).

После VS Code установите расширение rust-analyzer. Можно либо установить расширение rust-analyzer из Visual Studio Marketplace, либо открыть VS Code и выполнить поиск rust-analyzer в меню расширений (CTRL+SHIFT+X).

Для поддержки отладки установите расширение CodeLLDB. Можно либо установить расширение CodeLLDB из Visual Studio Marketplace, либо открыть VS Code и выполнить поиск CodeLLDB в меню расширений (CTRL+SHIFT+X).

В качестве альтернативы расширению CodeLLDB для поддержки отладки можно использовать расширение Microsoft C/C++ . Расширение C/C++ не интегрируется с интегрированной средой разработки, как CodeLLDB. Но расширение C/C++ предоставляет более подробную отладочную информацию. Поэтому его стоит иметь под рукой на всякий случай.

Можно либо установить расширение C/C++ из Visual Studio Marketplace, либо открыть VS Code и выполнить поиск C/C++ в меню расширений (CTRL+SHIFT+X).

Чтобы открыть терминал в VS Code, выберите Вид > Терминал или нажмите клавиши CTRL+` (символ обратного апострофа). Терминалом по умолчанию является PowerShell.

Здравствуй, мир! Руководство (использование Rust с VS Code)

Давайте испытаем Rust с помощью простого приложения "Hello, World!" .

Сперва запустите командную строку ( cmd.exe ) и cd перейдите в папку, в которой вы хотите хранить свои проекты Rust.

Затем укажите Cargo создать проект Rust с помощью следующей команды.

Аргументом, который вы передаете в команду cargo new , является имя проекта, который необходимо создать. В нашем случае это first_rust_project. Рекомендуется именовать проекты Rust в "змеином регистре" (все слова состоят из строчных букв, а пробелы заменены символами подчеркивания).

Теперь с помощью команды cd перейдите в эту папку, а затем запустите VS Code из нее.

В обозревателе VS Code откройте файл src > main.rs . Это файл исходного кода Rust, содержащий точку входа приложения (функцию main). Вот как это будет выглядеть.

Взглянув на код в main.rs , можно сразу же сказать, что main — это определение функции, и что код выводит строку "Hello, World!" Дополнительные сведения о синтаксисе см. в разделе Anatomy of a Rust Program (Структура программы Rust) на веб-сайте Rust.

Теперь давайте попробуем запустить приложение в отладчике. Установите точку останова на строке 2 и щелкните Выполнить > Запустить отладку (или нажмите клавишу F5). Доступны также команды Debug и Run, встроенные в текстовый редактор.

Как видите, отладчик останавливается на строке 2. Нажмите клавишу F5, чтобы продолжить, и приложение продолжит выполнение до завершения. В области Терминал вы увидите ожидаемые выходные данные: "Hello, World!"

Rust для Windows

Вы можете не только использовать Rust в Windows, но и создавать приложения для Windows с помощью Rust. С помощью крейта windows вы можете вызывать любые предыдущие, текущие и будущие интерфейсы API Windows. Дополнительные сведения об этом, а также примеры кода см. в разделе Rust для Windows и крейт windows.

Установка инструментария

Что нам потребуется для разработки графических приложений для Windows на языке Rust? Естественно у нас должен быть установлен сам компилятор Rust. Также необходио загузить либо Microsoft C++ Build Tools, либо Microsoft Visual Studio (например, можно выбрать бесплатный выруск Community).

Вне зависимости от того, какую именно из этих двух программ мы выбрали, при установке нам надо отметить следующие опции:

Desktop development with C++ / Разработка классических приложений на C++

Universal Windows Platform development / Разработка классических приложений для универсальной платформы Windows

Создание проекта

Выберем для проекта какой-нибудь каталог для проекта и перейдем к нему в командной строке с помощью команды cd . Например, в моем случае для проект будет располагаться в папке C:\rust\windows .

Далее с помощью команды

Создадим в этой папке новый проект с названием "hello".

Rust for Windows - создание проекта Cargo

В папке созданного проекта найдем файл Cargo.toml и откроем его. Добавим в него ссылку на библиотеку (а точнее crate) windows , которая и представляет проект Rust for Windows :

Файл build.rs

Теперь определим в папке проекта новый файл - build.rs . Этот скрипт автоматически вызывается инфраструктурой Cargo непосредственно перед компиляцией приложения. Определим в этом файле следующее содержимое:

Этот скрипт определяет те части Windows API, которые мы собираемся использовать в своем проекте. Они передаются в макрос windows::build! . Windows имеет множество разных API, но не все они нам нужны. И тем больше мы включим в проект различных API, тем медленнее будет происходить сборка приложения.

В итоге при выполнении этого файла макрос windows::build! создаст привязки к используемым компонентам Windows API. В частности, для создания и запуска приложения берем функциональность из модуля Windows::ApplicationModel::Activation и Windows::UI::Xaml . И так как в приложении мы будем использовать метку, которая будет выводить некоторый текст, то мы также подключаем соответствующий компонент (если точнее структуру) Windows::UI::Xaml::Controls::TextBlock .

И макрос windows::build! , используя метаданные этих компонентов, сгенерирует соответствующие типы Rust или привязки. Причем даже если мы указываем только конкретный тип, а не весь модуль, как в случае с Windows::UI::Xaml::Controls::TextBlock , то макрос может включать дополнительные типы, если они необходимы для функционирования этого типа.

Определение кода приложения

Теперь перейдем к файлу main.rs , который по умолчанию создается cargo в папке src и который по умолчанию имеет следующий код:

Изменим этот код на следующий:

Разбор кода

В начале идет атрибут

Он указывает на используемую подсистему. Подсистема в свою очередь определяет, как ОС будет выполнять приложение. В реальности для этого атрибута есть два возможных значения: windows и console . Значение "windows" указывает, что это будет графическое приложение, и позволяет скрыть консоль. (Без этого атрибута наряду с графическим окном мы увидим консоль приложения)

Далее определяется модуль bindings , который выполняет макрос include_bindings :

Этот макрос добавляет сгенерированные привязки в текущий контекст. И через модуль bindings мы сможем обращаться к сгенерированным привязкам. (Если файлов с кодом много и во все надо добавлять определение данного модуля, то выполнение этого макроса можно вынести в отдельный файл)

Далее идут подключения модулей и их отдельной функциональности:

Создание объекта приложения

Далее нам надо определить функционал приложения. Для представления приложения в библиотеке windows предназначена структура Windows::UI::Xaml::Application . Однако нам надо определить какой-то свой функционал приложения, чтобы оно имело то поведение и те компоненты, которые нам нужны. И для этого необходимо изменить поведение данной структуры. Но стоит учесть, что язык Rust не поддерживает наследование. То есть мы не можем просто так взять и унаследовать один тип от другого, переопределив его некоторые функции. Однако в библиотеке windows есть атрибут windows::implement , который позволяет применить для структур Rust функционал классов WinRT или любую комбинацию существующих интерфейсов COM и WinRT.

И в данном случае мы определяем структуру MyApp , которая и будет представлять приложение.

Параметр extend атрибута implement указывает, какой тип будет расширять структура. (В данном случае Windows::UI::Xaml::Application).

А параметр override указывает, какой метод будет переопределять структура. Здесь это метод OnLaunched() , в котором мы можем задать визуальный интерфейс и логику приложения.

В реальности атрибут implement обернет структуру MyApp в объект COM/WinRT, который расширяет структуру Application, используя агрегацию.

Поскольку мы указали, что структура MyApp будет переопределять метод OnLaunched() , то нам его надо определить для MyApp. Этот метод запускается при старте приложения:

В качестве второго параметра метод принимает объект _: &Option<LaunchActivatedEventArgs> , который предоставляет информацию о запуске приложения. Но поскольку нам этот параметр в данном случае не нужен, то в качестве его имени устанавливаем прочерк _.

В самом методе вначале получаем текущее окно приложения:

Далее создаем объект TextBlock, который представляет текстовую метку, с помощью метода new() :

С помощью метода SetText() устанавливаем текст метки:

А с помощью метода SetFontSize() устанавливаем высоту шрифта

Далее устанавливаем данный объект TextBlock в качестве содержимого окна и активируем окно:

Функция main

После определения приложения нам надо запустить его в функции main:

В начале идет вызов функции initialize_mta() , которая инициализирует COM.

Для создания объекта ApplicationInitializationCallback применяется статическая функция ApplicationInitializationCallback::new() , которая в качестве параметра принимает объект FnMut(&Option<ApplicationInitializationCallbackParams>) -> Result<()> . То есть фактически мы можем передать в функцию ApplicationInitializationCallback::new мы можем передаеть функцию, которая принимает один параметр. В этой функции мы создаем объект структуры MyApp:

И после этого окно приложения отобразится на экране компьютера.

Создание файла манифеста

Поскольку мы использует API Windows 10, то просто скомпилировать exe и запустить его одним кликом не получится. Нам нужно определить файл манифеста приложения. Итак, в папке проекта создадим папку appx . В этой папке определим файл AppxManifest.xml :

При локальном развертывании приложения можно оставить все эти данные, как они определены здесь. Но при желании можно и изменить. Вкратце рассмотрим его структуру.

Узел Identity

Задает глобально уникальные идентификаторы приложения и содержит следующие свойства:

Name : название пакета приложения. Представляет строку от 3 до 50 алфавитно-цифровых символов, точки и дефиса.

Publisher : создатель приложения. Должен начинаться с префикса "CN b">Version : версия приложения. Строка в формате "Major.Minor.Build.Revision"

Узел Properties

Описывает, как информация о приложении будет отображаться пользователю. Содержит следующие параметры:

DisplayName : отображаемое имя приложения

PublisherDisplayName : отображаемое имя создателя приложения

Logo : путь к логотипу приложения

Dependencies

Описывает зависимости приложения. Содержит элемент <TargetDeviceFamily> , который задает диапазон поддерживаемых устройств с помощью параметров:

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

MinVersion : минимальная версия устройства

MaxVersionTested : максимальная версия

Узел Resources

Определяет поддерживаемые языки с помощью вложеных элементов <Resource> . Первый элемент <Resource> задает язык приложения по умолчанию. Должен быть определен как минимум один язык.

Узел Applications

Определяет характеристики для каждого содержащегося в пакете приложения с помощью вложеных элементов <Application> .

Элемент <Application> имеет следующие атрибуты

Id : уникальный идентификатор приложения внутри пакета

Executable : имя файла приложения (файл exe или dll). Поскольку созданный через cargo проект называется "hello", то по умолчанию он будет компилироваться в файл "hello.exe"

EntryPoint : использует свойства Executable и Id

Также с помощью вложенного элемента uap:VisualElements элемент <Application> определяет визуальные настройки приложения. А именно:

DisplayName : отображаемое имя приложения - строка от 1 до 256 символов

Description : описание приложения - строка от 1 до 2048 символов

Square150x150Logo : путь к логотипу величиной 150x150

Square44x44Logo : путь к логотипу величиной 44x144

Поскольку здесь необходимо как минимум три файла изображения, то можно их загрузить ниже. Файл StoreLogo.jpg :

Компиляция и установка приложения

Для компиляции и установки приложения в папку проекта добавим новый файл register.cmd со следующим содержимым:

Этот скрипт сначала компилирует приложение командой cargo build . Затем компирует содержимое из папки appx (то есть файл манифеста и изображения) в папку \target\debug , где будет располагаться скомилированный файл приложения. И затем выполняется команда "Add-AppxPackage", которая устанавливает приложения на локальном компьютере.

Таким образом, весь проект будет выглядеть следующим образом:

Графическое приложение Windows 10 на Rust

Теперь, когда все готово, перейдем в командой строке к папке проекта и запустим в ней файл register.cmd :

GUI Приложение Windows 10 на Rust

В итоге в меню Пуск в Windows мы сможем увидеть наше приложение, которое там называется так, как было указано в файле манифеста - Windows 10 App in Rust :

GUI App Windows 10 in Rust

Запустим его и увидим элемент TextBlock с надписью, которую мы определили в коде приложения:

Читайте также: