Введение в Rust

10:42:00



Немного об уроках

Данные уроки являются вольным переводом книги по Rust, который я сам на данный момент изучаю. В этом уроке мы рассмотрим классическую программу “Hello World”, которую мы в последствии соберем через пакетный менеджер – Cargo.
 

Установка Rust

Для начала давайте установим компилятор Rust. Для этого нам нужен интернет и… все! Установка на Linux и Windows отличается. Если для последней достаточно просто скачать бинарный установщик, кто для первой придется поработать в терминале. В моем Manjaro Linux установка пошла командой:
sudo pacman -Syu rust cargo
Для операционной системы Windows достаточно скачать установщик отсюда

Удаление Rust

Удалить Rust еще проще, чем установить. На Mac и Linux вы можете просто выполнить скрипт:
$ sudo /usr/local/lib/rustlib/uninstall.sh
Для удаления на Windows просто воспользуйтесь штатным средством.

Решение проблем

Если у вас установлен Rust, то вы можете запустить его набрав в терминале:
$ rustc --version
После ввода команды вы должны увидеть версию компилятора, хеш коммита и хеш даты. Если это так – поздравляем! Rust на вашем компьютере установлена правильно!
Если нет и если у вас операционная система Windows, проверьте что Rust прописан в %PATH% переменной окружения. Если нет, что запустите заново установщик и выберете "Change", потом  "Change, repair, or remove installation" и убедитесь что "Add to PATH" выбран как параметр при установке Rust.
Если Rust установлен корректно, но не прописался в переменные окружения – посмотрите документацию к вашей операционной системы для решения данной проблемы.
Так же вы можете для получения консультаций использоватьs the #rust IRC channel on irc.mozilla.org, где мы можем дать вам доступ в Mibbit. Есть и другие прекрасные ресурсы, например the users forum, и Stack Overflow.
Так же установшик вместе с языком копирует и файлы документации. Для UNIX-подобных систем в папку /usr/local/share/doc/rust. На Windows она будет находится  share/doc директории папки, куда установлен Rust.

Hello, World!

Теперь, когда Rust установлен вы можем написать свою первую программу, традиционную для обучения языкам программирования программу – вывод на экран текста «Hello, world!».
Для написания программы вы можете использовать SolidOak или любую другую IDE для языка программирования Rust и даже простой текстовый редактор, который удобен вам.

Создание файлов проекта

Давайте создадим отдельную папку для всех проектов на Rust и в ней создадим папку нашего первого проекта. Для этого выполните в терминале следующие команды:
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
Примечание: для ОС Windows эти команды не будут работать! Можете воспользоваться обычным файловым менеджером или обратиться к документации PowerShell.

Пишем нашу первую программу

Создайте файл main.rs. Это будет исходным текстом нашей программы. Все исходные тексты на языке Rust имеют расширение .rs. Если вы хотите использовать несколько слов в названии файла – используйте символ нижнего подчеркивания, чтобы отделить одно слово от другого. Для примера:  hello_world.rs.
Давайте теперь откроем наш файл main.rs и напишем в нем код:
fn main() {
    println!("Hello, world!");
}
Сохраните файл, и вернитесь в окно терминала. На Linux или OSX, введите следующие команды:
$ rustc main.rs
$ ./main
Hello, world!
На Windows, будет создан файл main.exe. Запустив в терминале данный файл вы увидите выведенный на экран надпись: «Hello, world Если у вас все получилось – поздравляем! Вы написали свою первую программу на языке Rust. Теперь надо понять как она работает!

Анатомия программы на Rust

Давайте теперь разберем всю программа буквально построчно и объясним, что происходит на каждой строке. Для начала обратимся к строчкам:
fn main() {

}
На этой строке определяется функция в языке Rust. Наша функция main является особенной, с нее начинаются все программы на языке Rust (аналогичная функция есть на языке Си). По большому счету, первая строка говорит компилятору: «Я есть функция с именем main и я ничего не возвращаю». Это понятно, так как после скобок нет других операторов, которые бы показывали тип, который должна вернуть функция.
Символы фигурных скобок ({}) являются «ограничителями блока кода» и показывают, где начинается и кончается код конкретной функции. В функции main() там располагается строчка:
    println!("Hello, world!");
Что делает эта строка? Все просто – она выводит на экран “Hello, World!”, более ничего. Важной частью  этой строки является println!() – макрос языка Rust. Функция от макроса отличается тем, что у функции нет на конце символа «!», а у макроса – есть. По поводу что такое макрос и как он применяется мы поговорим позже, сейчас просто запомните что данный «оператор» является макросом и мы его используем.
Далее, как аргумент макрос принимает строку "Hello, world!". Строки в системных языках программирования занимают особое место, т.к. работать с ними достаточно сложно. В данном случае строка относится к типу statically allocated. Таким образом мы просто передаем макросу println! Аргумент, а он выводит на экран надпись. Все очень просто!
 Строка кода заканчивается символом точки с запятой (;).  Не вдаваясь в подробности просто скажем, что у Rust любая строка кода должна заканчиваться данным символом.

Компиляция и другие шаги

Мы написали нашу первую программу и разобрали как она работает. Теперь разберем так же как работает компилятор языка Rust и какие есть более удобные способы собирать программы на нём.
Для начала вспомним, что для сборки программы в бинарный файл мы можем набрать:
$ rustc main.rs
Если вы ранее писали на языках C или C++, то увидите, что это похоже на gcc или clang. После того как программа будет успешно собрана, вы получите два файла в папках. Для Linux вы можете выполнить команду:
$ ls
main  main.rs
На Windows введите:
$ dir
main.exe  main.rs
Таким образом, мы получили файл с исходным кодом программы (файл, который имеет расширение .rs) и исполняемый файл (main.exe на Windows, main в других операционных системах). Он может быть запущен командой main или main.exe .

Hello, Cargo

Cargo – система сборки программ на языке Rust. Все программисты, использующие данный язык используют и Cargo для управления своими проектами. Cargo может управлять тремя областями в вашем проекте: собирать код, скачивать необходимые библиотеки, собирать библиотеки. Если у вашего кода есть зависимости они должны быть описаны именно тут.
Простая программа на Rust не имеет зависимостей. Но в больших программах их может быть очень много и в этом случае Cargo облегчит жизнь. Для того, чтобы проверить установлен ли он, наберите в терминале:
$ cargo --version
Если в терминале появился номер версии замечательно! Cargo у вас установлен. Если вы увидите ошибку типа  command not found’, то обратитесь к документации и установите Cargo.

Конвертация в Cargo

Давайте пере конвертируем нашу программу «Hello World» в вид понятный для Cargo. Для Cargo-фикации проекта мы должны сделать следующие вещи:
  1. Разместить наш исходный файл в правильные директории.
  2. Удалить скомпилированный файл и для собрки нового.
  3. Создать файл конфигурации проекта для  Cargo.
Давайте начнем!

Новый исполняемый файл и правильные директории

Вернемся в терминал для перемещения нашего файла и выполним команды:
$ mkdir src
$ mv main.rs src/main.rs
$ rm main  # or 'del main.exe' on Windows
Cargo считает, что все исходные файлы вашей программы хранятся в директории под именем src. Теперь скопируйте ваш main.rs в папку src и удалите откомилированный файл.

Создание конфигурационного файла

Следующий шаг «каргофикации» вашего файла – создание конфигурационного файла Cargo.toml, который размещается в папке с проектом. Убедитесь в правильности имени (С – большая), иначе Cargo не воспримет его как конфигурационный файл. Этот файл имеет формат TOML (Tom's Obvious, Minimal Language). TOML это некое подобие INI, но более подходящий для нужд Cargo. Внесем в него информацию:
[package]

name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]
В первой строке, [package], обозначает что это конфигурация пакета. Далее идет добавление информации  о пакете. Как только вы её заполните сохраняйте файл!

Сборка проекта с помощью Cargo

После того, как файл Cargo.toml размещен в корневой директории проекта мы можем собрать его выполнил следующие команды:
$ cargo build
   Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
$ ./target/debug/hello_world
Hello, world!
Ура! Мы получили бинарник нашей первой программы. Он располагается по пути:
./target/debug/hello_world, но вы можете использовать командлу cargo run для запуска проекта:
$ cargo run
     Running `target/debug/hello_world`
Hello, world!

В следующем уроке мы рассмотрим как с помощью Cargo создавать проект, рассмотрим .lock-файл для Cargo и продолжим изучение языка Rust!

Вам так же может быть интересны

0 коммент.

Дорогие друзья! Будем уважать друг друга и не превращать данный блок в linux.org.ru

Мы в социальных сетях

Контакты

  • ООО "Миллениум. Интеграция"
  • Контактный телефон: +7 (919) 932-86-97
  • Электронная почта: написать нам!