Введение в Rust
10:42:00Немного об уроках
Данные уроки являются вольным переводом книги по Rust, который я сам на данный момент изучаю. В этом уроке мы
рассмотрим классическую программу “Hello World”, которую мы в последствии соберем через пакетный менеджер – Cargo.
Установка Rust
Для начала давайте установим компилятор Rust. Для этого нам нужен интернет и… все! Установка на Linux и Windows отличается. Если для последней
достаточно просто скачать бинарный установщик, кто для первой придется
поработать в терминале. В моем Manjaro Linux установка пошла командой:
sudo pacman -Syu rust cargo
Удаление 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 user’s 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-фикации проекта мы должны сделать
следующие вещи:
- Разместить наш исходный файл в правильные директории.
- Удалить скомпилированный файл и для собрки нового.
- Создать файл конфигурации проекта для 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