Przedmowa

To nie zawsze było oczywiste, ale rolą języka programowania Rust fundamentalnie jest potęgowanie możliwości: nieważne, jaki kod aktualnie piszesz, Rust pozwala ci sięgać dalej i pewnie programować w szerszym zakresie domen niż kiedykolwiek wcześniej.

Spójrz przykładowo na pracę na „poziomie systemowym”, gdzie trzeba borykać się z takimi niskopoziomowymi szczegółami jak zarządzanie pamięcią, reprezentacja danych czy współbieżność. Tradycyjnie, ten obszar programowania był postrzegany jako tajemny i dostępny jedynie dla wybranej garstki, która poświęciła długie lata, by nauczyć się unikać jego osławionych pułapek. Nawet ci, którzy się tym zajmują, robią to uważnie, aby ich kod nie stał się furtką dla exploitów, awarii lub innych przykładów zepsucia.

Rust pozbywa się tych barier poprzez eliminację starych zasadzek i dostarczenie przyjaznego i dopracowanego zestawu narzędzi, które pomagają ci po drodze. Programiści zmuszeni do „umoczenia się” w niskopoziomowej kontroli, mogą do tego celu użyć Rusta, bez podejmowania zwyczajowego ryzyka wywołania awarii lub dziur bezpieczeństwa i bez konieczności uczenia się drobnych szczegółów kapryśnych narzędzi. Nawet lepiej, język zaprojektowano z myślą o prowadzeniu cię w sposób naturalny ku tworzeniu niezawodnego kodu, który jest wydajny zarówno pod względem szybkości, jak i wykorzystania pamięci.

Programiści, którzy już pracują z niskopoziomowym kodem, mogą użyć Rusta do podniesienia swoich ambicji. Dla przykładu, wprowadzenie wielowątkowości w Ruście jest mało ryzykowną operacją: kompilator wyłapie za ciebie popularne błędy. Możesz też uderzyć w bardziej agresywną optymalizację kodu z uczuciem pewności, że nie wprowadzisz przypadkowo źródeł awarii czy podatności na ataki.

Ale Rust nie jest ograniczony do programowania systemowego i niskopoziomowego. Jest ekspresyjny i wystarczająco ergonomiczny, żeby za jego pomocą tworzyć aplikacje CLI, serwery sieciowe i wiele innych rodzajów przyjaznego do pisania kodu - w dalszej części książki znajdziesz proste przykłady obu takich programów. Praca z Rustem pozwala ci na budowanie umiejętności, które można przenosic z jednej domeny do drugiej; możesz uczyć sie Rusta pisząc aplikację sieciową, by potem zastosować te same rozwiązania tworząc dla Raspberry Pi.

Niniejsza książka w pełni obejmuje potencjał Rusta do ulepszania swoich użytkowników. To przyjazny i dostępny tekst, nakierowany nie tylko na pomoc w podniesieniu twojego poziomu znajomości Rusta, ale również na poprawę twojej pewności siebie jako programisty w ujęciu ogólnym. Zanurz się więc, przygotuj na naukę - i witaj w społeczności Rusta!

— Nicholas Matsakis i Aaron Turon