- Getting started
- Quickly set up a Rust development environment and write a small app!
- Installing Rust
- Rustup: the Rust installer and version management tool
- Windows Subsystem for Linux
- Is Rust up to date?
- Cargo: the Rust build tool and package manager
- Other tools
- Generating a new project
- Adding dependencies
- A small Rust application
- Learn more!
- Who’s this crab, Ferris?
- Get help!
- Язык программирования Rust
- Создание папки проекта
- Написание и запуск первой Rust программы
- Анатомия программы на Rust
- Компиляция и запуск - это отдельные шаги
Getting started
Quickly set up a Rust development environment and write a small app!
Installing Rust
You can try Rust online in the Rust Playground without installing anything on your computer.
Rustup: the Rust installer and version management tool
The primary way that folks install Rust is through a tool called Rustup, which is a Rust installer and version management tool.
It looks like you’re running macOS, Linux, or another Unix-like OS. To download Rustup and install Rust, run the following in your terminal, then follow the on-screen instructions. See «Other Installation Methods» if you are on Windows.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
It looks like you’re running Windows. To start using Rust, download the installer, then run the program and follow the onscreen instructions. You may need to install the Visual Studio C++ Build tools when prompted to do so. If you are not on Windows see «Other Installation Methods».
Windows Subsystem for Linux
If you’re a Windows Subsystem for Linux user run the following in your terminal, then follow the on-screen instructions to install Rust.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rust runs on Windows, Linux, macOS, FreeBSD and NetBSD. If you are on one of these platforms and are seeing this then please report an issue with the following values:
To install Rust, if you are running Unix,
run the following in your terminal, then follow the on-screen instructions.
curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.rustup.rs | sh
If you are running Windows,
download and run rustup‑init.exe then follow the on-screen instructions.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
If you are running Windows,
download and run rustup‑init.exe then follow the on-screen instructions.
Is Rust up to date?
Rust updates very frequently. If you have installed Rustup some time ago, chances are your Rust version is out of date. Get the latest version of Rust by running rustup update .
Cargo: the Rust build tool and package manager
When you install Rustup you’ll also get the latest stable version of the Rust build tool and package manager, also known as Cargo. Cargo does lots of things:
- build your project with cargo build
- run your project with cargo run
- test your project with cargo test
- build documentation for your project with cargo doc
- publish a library to crates.io with cargo publish
To test that you have Rust and Cargo installed, you can run this in your terminal of choice:
Other tools
Rust support is available in many editors:
Generating a new project
Let’s write a small application with our new Rust development environment. To start, we’ll use Cargo to make a new project for us. In your terminal of choice run:
This will generate a new directory called hello-rust with the following files:
hello-rust |- Cargo.toml |- src |- main.rs
Cargo.toml is the manifest file for Rust. It’s where you keep metadata for your project, as well as dependencies.
src/main.rs is where we’ll write our application code.
cargo new generates a «Hello, world!» project for us! We can run this program by moving into the new directory that we made and running this in our terminal:
You should see this in your terminal:
$ cargo run Compiling hello-rust v0.1.0 (/Users/ag_dubs/rust/hello-rust) Finished dev [unoptimized + debuginfo] target(s) in 1.34s Running `target/debug/hello-rust` Hello, world!
Adding dependencies
Let’s add a dependency to our application. You can find all sorts of libraries on crates.io, the package registry for Rust. In Rust, we often refer to packages as “crates.”
In this project, we’ll use a crate called ferris-says .
In our Cargo.toml file we’ll add this information (that we got from the crate page):
[dependencies] ferris-says = "0.2"
We can also do this by running cargo add ferris-says@0.2 .
. and Cargo will install our dependency for us.
You’ll see that running this command created a new file for us, Cargo.lock . This file is a log of the exact versions of the dependencies we are using locally.
To use this dependency, we can open main.rs , remove everything that’s in there (it’s just another example), and add this line to it:
This line means that we can now use the say function that the ferris-says crate exports for us.
A small Rust application
Now let’s write a small application with our new dependency. In our main.rs , add the following code:
use ferris_says::say; // from the previous step use std::io::; fn main()
Once we save that, we can run our application by typing:
Assuming everything went well, you should see your application print this to the screen:
Learn more!
You’re a Rustacean now! Welcome! We’re so glad to have you. When you’re ready, hop over to our Learn page, where you can find lots of books that will help you to continue on your Rust adventure.
Who’s this crab, Ferris?
Ferris is the unofficial mascot of the Rust Community. Many Rust programmers call themselves “Rustaceans,” a play on the word “crustacean.” We refer to Ferris with any pronouns “she,” “he,” “they,” “it,” etc.
Ferris is a name playing off of the adjective, “ferrous,” meaning of or pertaining to iron. Since Rust often forms on iron, it seemed like a fun origin for our mascot’s name!
You can find more images of Ferris on rustacean.net.
Get help!
Язык программирования Rust
Теперь, когда вы установили Rust, пришло время написать свою первую программу на Rust. Традиционно при изучении нового языка принято писать небольшую программу, которая печатает на экране текст Hello, world! , поэтому мы сделаем то же самое!
Примечание: Эта книга предполагает наличие базового навыка работы с командной строкой. Rust не предъявляет особых требований к тому, каким инструментарием вы пользуетесь для редактирования или хранения вашего кода, поэтому если вы предпочитаете использовать интегрированную среду разработки (IDE) вместо командной строки, смело используйте вашу любимую IDE. Многие IDE сейчас в той или иной степени поддерживают Rust; подробности можно узнать из документации к IDE. Команда Rust сосредоточилась на обеспечении отличной поддержки IDE с помощью rust-analyzer . Более подробную информацию смотрите в Приложении D .
Создание папки проекта
Прежде всего начнём с создания директории, в которой будем сохранять наш код на языке Rust. На самом деле не важно, где сохранять наш код. Однако, для упражнений и проектов, обсуждаемых в данной книге, мы советуем создать директорию projects в вашем домашнем каталоге, там же и хранить в будущем код программ из книги.
Откройте терминал и введите следующие команды для того, чтобы создать директорию projects для хранения кода разных проектов, и, внутри неё, директорию hello_world для проекта “Hello, world!”.
Для Linux, macOS и PowerShell на Windows, введите:
$ mkdir ~/projects $ cd ~/projects $ mkdir hello_world $ cd hello_world
Для Windows в CMD, введите:
> mkdir "%USERPROFILE%\projects" > cd /d "%USERPROFILE%\projects" > mkdir hello_world > cd hello_world
Написание и запуск первой Rust программы
Затем создайте новый исходный файл и назовите его main.rs. Файлы Rust всегда заканчиваются расширением .rs. Если вы используете более одного слова в имени файла, принято разделять их символом подчёркивания. Например, используйте hello_world.rs вместо helloworld.rs.
Теперь откроем файл main.rs для редактирования и введём следующие строки кода:
Листинг 1-1: Программа, которая печатает Hello, world!
Сохраните файл и вернитесь в окно терминала в каталог ~/projects/hello_world. В Linux или macOS введите следующие команды для компиляции и запуска файла:
$ rustc main.rs $ ./main Hello, world!
В Windows, введите команду .\main.exe вместо ./main :
> rustc main.rs > .\main.exe Hello, world!
Независимо от вашей операционной системы, строка Hello, world! должна быть выведена на терминал. Если вы не видите такого вывода, обратитесь к разделу «Устранение неполадок» , чтобы узнать, как получить помощь.
Если напечаталось Hello, world! , то примите наши поздравления! Вы написали программу на Rust, что делает вас Rust программистом — добро пожаловать!
Анатомия программы на Rust
Давайте рассмотрим «Hello, world!» программу в деталях. Вот первая часть головоломки:
Эти строки определяют функцию с именем main . Функция main особенная: это всегда первый код, который запускается в каждой исполняемой программе Rust. Первая строка объявляет функцию с именем main , которая не имеет параметров и ничего не возвращает. Если бы были параметры, они бы заключались в круглые скобки () .
Тело функции заключено в <> . Rust требует фигурных скобок вокруг всех тел функций. Хороший стиль — поместить открывающую фигурную скобку на ту же строку, что и объявление функции, добавив между ними один пробел.
Примечание: Если хотите придерживаться стандартного стиля во всех проектах Rust, вы можете использовать инструмент автоматического форматирования под названием rustfmt для форматирования кода в определённом стиле (подробнее о rustfmt в Приложении D . Команда Rust включила этот инструмент в стандартный дистрибутив Rust, как rustc , поэтому он уже должен быть установлен на вашем компьютере!
Тело функции main содержит следующий код:
#![allow(unused)] fn main() println!("Hello, world!"); >
Эта строка делает всю работу в этой маленькой программе: печатает текст на экран. Можно заметить четыре важных детали.
Во-первых, стиль Rust предполагает отступ в четыре пробела, а не табуляцию.
Во-вторых, println! вызывается макрос Rust. Если бы вместо него была вызвана функция, она была бы набрана как println (без ! ). Более подробно мы обсудим макросы Rust в главе 19. Пока достаточно знать, что использование ! подразумевает вызов макроса вместо обычной функции, и что макросы не всегда подчиняются тем же правилам как функции.
В-третьих, вы видите строку "Hello, world!" . Мы передаём её в качестве аргумента макросу println! , и она выводится на экран.
В-четвёртых, мы завершаем строку точкой с запятой ( ; ), которая указывает на окончание этого выражения и возможность начала следующего. Большинство строк кода Rust заканчиваются точкой с запятой.
Компиляция и запуск - это отдельные шаги
Вы только что запустили впервые созданную программу, поэтому давайте рассмотрим каждый шаг этого процесса.
Перед запуском программы на Rust вы должны скомпилировать её с помощью компилятора Rust, введя команду rustc и передав ей имя вашего исходного файла, например:
Если у вас есть опыт работы с C или C++, вы заметите, что это похоже на gcc или clang . После успешной компиляции Rust выводит двоичный исполняемый файл.
В Linux, macOS и PowerShell в Windows вы можете увидеть исполняемый файл, введя команду ls в оболочке:
В Linux и macOS вы увидите два файла. При использовании PowerShell в Windows вы увидите такие же три файла, как и при использовании CMD. Используя CMD в Windows, введите следующее:
> dir /B %= the /B option says to only show the file names =% main.exe main.pdb main.rs
Это показывает исходный код файла с расширением .rs, исполняемый файл (main.exe на Windows, но main на всех других платформах) и, при использовании Windows, файл, содержащий отладочную информацию с расширением .pdb. Отсюда вы запускаете файлы main или main.exe, например:
$ ./main # для Linux > .\main.exe # для Windows
Если ваш main.rs — это ваша программа «Hello, world!», эта строка выведет в терминал Hello, world! .
Если вы лучше знакомы с динамическими языками, такими как Ruby, Python или JavaScript, возможно, вы не привыкли компилировать и запускать программу как отдельные шаги. Rust — это предварительно скомпилированный язык, то есть вы можете скомпилировать программу и передать исполняемый файл кому-то другому, и он сможет запустить его даже без установленного Rust. Если вы даёте кому-то файл .rb , .py или .js, у него должна быть установлена реализация Ruby, Python или JavaScript (соответственно). Но в этих языках вам нужна только одна команда для компиляции и запуска вашей программы. В дизайне языков программирования всё — компромисс.
Компиляция с помощью rustc подходит для простых программ, но по мере роста вашего проекта вы захотите управлять всеми параметрами и упростить передачу кода. Далее мы познакомим вас с инструментом Cargo, который поможет вам писать программы из реального мира на Rust.