Предисловие

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

Возьмём, к примеру, работу «системного уровня» которая касается низкоуровневых деталей управления памятью, представления данных и многопоточности. Традиционно эта область программирования считается загадочной, доступной лишь немногим избранным, посвятившим необходимые годы обучению для избегания своих печально известных подводных камней. И даже те, кто это практикует, делают все с осторожностью, чтобы их код не был подвержен атакам вредоносного кода, сбоям или нарушениям целостности.

Rust снимает эти барьеры, уменьшая старые подводные камни и предоставляя дружественный, отточенный набор инструментов, которые в этом помогут вам. Программисты, которым необходимо «погрузиться» в низкоуровневое управление, могут сделать это с помощью Rust, не особенно волнуясь про привычный риск аварий или проблемы безопасности, и не изучая тонкости трудных вопросов изменчивых наборов инструментов. Более того, язык предназначен для того, чтобы легко вести вас к надёжному коду, который эффективен с точки зрения скорости и использования памяти.

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

Но Rust не ограничивается низкоуровневым системным программированием. Он достаточно выразителен и эргономичен, чтобы приложения CLI (Command Line Interface - консольные программы), веб-серверы и многие другие виды кода были довольно приятными для написания, позже вы найдёте простые примеры того и другого в книге. Работа с Rust позволяет вырабатывать навыки, которые переносятся из одной предметной области в другую; Вы можете изучить Rust, написав веб-приложение, а затем применить те же навыки для Raspberry Pi.

Эта книга полностью раскрывает потенциал Rust для расширения возможностей пользователей. Это дружественный и доступный текст, предназначенный для того, чтобы помочь вам повысить уровень знаний не только о Rust, но и ваши возможности и уверенность в себе как программиста в целом. Так что погрузитесь, будьте готовы учиться - и добро пожаловать в сообщество Rust!

— Nicholas Matsakis и Aaron Turon