Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Hello, World!

Итак, поскольку вы установили Rust, приступим к написанию вашей первой программы на нём. По традиции, при изучении нового языка программирования первой программой пишется вывод текста Hello, world! на экран. Этой программой мы сейчас и займёмся.

Note: This book assumes basic familiarity with the command line. Rust makes no specific demands about your editing or tooling or where your code lives, so if you prefer to use an IDE instead of the command line, feel free to use your favorite IDE. Many IDEs now have some degree of Rust support; check the IDE’s documentation for details. The Rust team has been focusing on enabling great IDE support via rust-analyzer. See Appendix D for more details.

Project Directory Setup

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

Откройте терминал и введите следующие команды, чтобы создать директорию “projects” и директорию для проекта “Hello, world!” внутри директории projects.

Для 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 Program Basics

Далее. Создадим исходный файл и назовём его main.rs. Файлы Rust всегда оканчиваются расширением .rs. Если вы используете больше одного слова в названии файла, следует отбивать слова друг от друга нижним подчёркиванием. Например, вместо helloworld.rs лучше напишите hello_world.rs.

Теперь откройте только что созданный файл main.rs и заполните его кодом из Листинга 1-1.

Filename: main.rs
fn main() {
    println!("Hello, world!");
}
Listing 1-1: A program that prints Hello, world!

Сохраните файл и вернитесь к консоли. Убедитесь, что вы находитесь в директории ~/projects/hello_world. На Linux и macOS, введите следующие команды, чтобы скомпилировать и запустить файл:

$ rustc main.rs
$ ./main
Hello, world!

On Windows, enter the command .\main instead of ./main:

> rustc main.rs
> .\main
Hello, world!

Независимо от вашей операционной системы, в консоли должна напечататься строка Hello, world!. Если этого не произошло, обратитесь к пункту “Решение проблем” раздела “Установка”, чтобы найти возможное решение.

Если же вы видите Hello, world!, примите поздравления! Вы написали свою первую программу на Rust, и стали Rust-программистом. Добро пожаловать!

The Anatomy of a Rust Program

Давайте детально рассмотрим нашу программу. Вот первая деталька пазла:

fn main() {

}

These lines define a function named main. The main function is special: It is always the first code that runs in every executable Rust program. Here, the first line declares a function named main that has no parameters and returns nothing. If there were parameters, they would go inside the parentheses (()).

Тело функции заключено в {}. Rust требует использовать фигурные скобки для определения тела функций. Принятым стилем является поставить открывающую фигурную скобку на той же строке, где объявляется функция, отделив объявление от скобки пробелом.

Примечание: Если вы хотите всюду соблюдать стандартный единообразный стиль, вы можете воспользоваться инструментом форматирования rustfmt. (больше о rustfmt можно узнать в Приложении D ). Это инструмент поставляется вместе с rustc, так что он должен быть уже на вашем компьютере!

Тело функции main содержит следующий код:

#![allow(unused)]
fn main() {
println!("Hello, world!");
}

This line does all the work in this little program: It prints text to the screen. There are three important details to notice here.

First, println! calls a Rust macro. If it had called a function instead, it would be entered as println (without the !). Rust macros are a way to write code that generates code to extend Rust syntax, and we’ll discuss them in more detail in Chapter 20. For now, you just need to know that using a ! means that you’re calling a macro instead of a normal function and that macros don’t always follow the same rules as functions.

Во-вторых, вы видите строку "Hello, world!". Мы передаём эту строку как аргумент макросу println!, и она же выводится на экран.

Third, we end the line with a semicolon (;), which indicates that this expression is over, and the next one is ready to begin. Most lines of Rust code end with a semicolon.

Compilation and Execution

Давайте рассмотрим каждый шаг процесса запуска программы.

Перед запуском программы на Rust, вы должны её скомпилировать, используя компилятор Rust. Введите команду rustc в терминал и передайте в качестве ей аргумента имя файла исходного кода:

$ rustc main.rs

If you have a C or C++ background, you’ll notice that this is similar to gcc or clang. After compiling successfully, Rust outputs a binary executable.

В Linux, macOS и PowerShell на Windows, вы можете увидеть исполняемый файл, введя команду ls в консоль:

$ ls
main  main.rs

На Linux и macOS вы увидите два файла. На Windows вы увидите три. Если вы используете 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 # or .\main on Windows

Если ваш main.rs содержит программу “Hello, world!”, то исполняемый файл выведет Hello, world! в консоль.

Если вы более знакомы с динамическими языками программирования, такими как Ruby, Python или JavaScript, вам может быть непривычно выполнять сборку и исполнение программы как отдельные шаги. Rust — язык с предварительной компиляцией, что означает, что вы можете скомпилировать программу и отдать исполняемый файл другому человеку, и он сможет его запустить без необходимости устанавливать Rust. Если же вы дадите кому-то файл .rb, .py или .js, другому человеку потребуется сначала установить (соответственно) Ruby, Python или JavaScript. Однако, в этих языках вам нужна лишь одна команда для сборки и запуска ваших программ. Всё в дизайне языков программирования — компромисс.

Прямая компиляция через rustc достаточна для небольших программ, но по мере их роста вам потребуется управлять различными настройками и делать ваш код лёгким для распространения. В следующем разделе мы покажем вам Cargo — инструмент, используемый для написания прикладных программ на Rust.