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

Witaj, świecie!

Skoro zainstalowałeś Rusta, czas napisać swój pierwszy program w tym języku. Tradycyjnie, ucząc się nowego języka, pisze się mały program, który wyświetla tekst Witaj, świecie! na ekranie, więc zrobimy to samo i tutaj!

Uwaga: Ta książka zakłada podstawową znajomość wiersza poleceń. Rust nie stawia żadnych specyficznych wymagań dotyczących edycji, narzędzi ani miejsca przechowywania kodu, więc jeśli wolisz używać IDE zamiast wiersza poleceń, śmiało korzystaj ze swojego ulubionego IDE. Wiele środowisk IDE ma obecnie pewne wsparcie dla Rusta; sprawdź dokumentację IDE, aby uzyskać szczegółowe informacje. Zespół Rusta skupia się na zapewnieniu doskonałego wsparcia IDE za pośrednictwem rust-analyzer. Więcej szczegółów znajdziesz w Dodatku D.

Konfiguracja katalogu projektu

Zaczniesz od utworzenia katalogu do przechowywania kodu Rusta. Dla Rusta nie ma znaczenia, gdzie znajduje się Twój kod, ale dla ćwiczeń i projektów w tej książce sugerujemy utworzenie katalogu projects w katalogu domowym i przechowywanie tam wszystkich swoich projektów.

Otwórz terminal i wprowadź następujące polecenia, aby utworzyć katalog projects i katalog dla projektu „Witaj, świecie!” w katalogu projects.

Na Linuksie, macOS i w PowerShell na Windows, wprowadź:

$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world

W systemie Windows CMD wprowadź:

> mkdir "%USERPROFILE%\projects"
> cd /d "%USERPROFILE%\projects"
> mkdir hello_world
> cd hello_world

Podstawy programu w Ruście

Następnie utwórz nowy plik źródłowy i nazwij go main.rs. Pliki Rusta zawsze kończą się rozszerzeniem .rs. Jeśli używasz więcej niż jednego słowa w nazwie pliku, konwencją jest używanie podkreślenia do ich rozdzielania. Na przykład użyj hello_world.rs zamiast helloworld.rs.

Teraz otwórz nowo utworzony plik main.rs i wprowadź kod z Listingu 1-1.

fn main() {
    println!("Hello, world!");
}

Zapisz plik i wróć do okna terminala w katalogu ~/projects/hello_world. Na Linuksie lub macOS wprowadź następujące polecenia, aby skompilować i uruchomić plik:

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

Na Windows wprowadź polecenie .\main zamiast ./main:

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

Niezależnie od systemu operacyjnego, w terminalu powinno pojawić się Witaj, świecie!. Jeśli nie widzisz tego wyjścia, wróć do części „Rozwiązywanie problemów” w sekcji Instalacja, aby uzyskać pomoc.

Jeśli Witaj, świecie! zostało wypisane, gratulacje! Oficjalnie napisałeś program w Ruście. To czyni Cię programistą Rusta – witaj!

Anatomia programu w Ruście

Przejrzyjmy szczegółowo ten program „Witaj, świecie!”. Oto pierwszy element układanki:

fn main() {

}

Te wiersze definiują funkcję o nazwie main. Funkcja main jest specjalna: Zawsze jest pierwszym kodem, który jest uruchamiany w każdym wykonywalnym programie w Ruście. Tutaj pierwszy wiersz deklaruje funkcję o nazwie main, która nie ma parametrów i nic nie zwraca. Gdyby były parametry, znalazłyby się w nawiasach ().

Ciało funkcji jest ujęte w {}. Rust wymaga nawiasów klamrowych wokół wszystkich ciał funkcji. Dobrym stylem jest umieszczanie otwierającego nawiasu klamrowego w tym samym wierszu co deklaracja funkcji, dodając jeden odstęp pomiędzy nimi.

Uwaga: Jeśli chcesz trzymać się standardowego stylu w projektach Rusta, możesz użyć automatycznego narzędzia formatującego o nazwie rustfmt do formatowania kodu w określonym stylu (więcej o rustfmt w Dodatku D). Zespół Rusta dołączył to narzędzie do standardowej dystrybucji Rusta, podobnie jak rustc, więc powinno być już zainstalowane na Twoim komputerze!

Ciało funkcji main zawiera następujący kod:

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

Ten wiersz wykonuje całą pracę w tym małym programie: wyświetla tekst na ekranie. Należy zwrócić uwagę na trzy ważne szczegóły.

Po pierwsze, println! wywołuje makro Rusta. Gdyby wywoływało funkcję, byłoby wpisane jako println (bez !). Makra Rusta to sposób na pisanie kodu, który generuje kod w celu rozszerzenia składni Rusta, a omówimy je bardziej szczegółowo w Rozdziale 20. Na razie wystarczy wiedzieć, że użycie ! oznacza wywołanie makra zamiast normalnej funkcji, a makra nie zawsze przestrzegają tych samych zasad co funkcje.

Po drugie, widzisz ciąg znaków "Hello, world!". Przekazujemy ten ciąg jako argument do println!, a ciąg jest wyświetlany na ekranie.

Po trzecie, kończymy wiersz średnikiem (;), co oznacza, że to wyrażenie zostało zakończone, a następne jest gotowe do rozpoczęcia. Większość wierszy kodu Rusta kończy się średnikiem.

Kompilacja i wykonanie

Właśnie uruchomiłeś nowo utworzony program, więc przyjrzyjmy się każdemu krokowi w tym procesie.

Przed uruchomieniem programu w Ruście musisz go skompilować za pomocą kompilatora Rusta, wpisując polecenie rustc i podając nazwę pliku źródłowego, w ten sposób:

$ rustc main.rs

Jeśli masz doświadczenie z C lub C++, zauważysz, że jest to podobne do gcc lub clang. Po pomyślnej kompilacji Rust wypisuje plik wykonywalny.

Na Linuksie, macOS i w PowerShell na Windows, możesz zobaczyć plik wykonywalny, wpisując polecenie ls w swojej powłoce:

$ ls
main  main.rs

Na Linuksie i macOS zobaczysz dwa pliki. W PowerShell na Windows zobaczysz te same trzy pliki, które zobaczyłbyś używając CMD. W CMD na Windows wypisałbyś następujące polecenie:

> dir /B %= opcja /B wyświetla tylko nazwy plików =%
main.exe
main.pdb
main.rs

Pokazuje to plik kodu źródłowego z rozszerzeniem .rs, plik wykonywalny (main.exe na Windows, ale main na wszystkich innych platformach) oraz, w przypadku używania Windows, plik zawierający informacje debugowania z rozszerzeniem .pdb. Stąd uruchamiasz plik main lub main.exe, w ten sposób:

$ ./main # lub .\main na Windows

Jeśli twój main.rs to program „Witaj, świecie!”, ten wiersz wypisze Witaj, świecie! w twoim terminalu.

Jeśli jesteś bardziej zaznajomiony z językami dynamicznymi, takimi jak Ruby, Python lub JavaScript, możesz nie być przyzwyczajony do kompilowania i uruchamiania programu jako oddzielnych kroków. Rust jest językiem kompilowanym z wyprzedzeniem, co oznacza, że możesz skompilować program i przekazać plik wykonywalny komuś innemu, a ta osoba może go uruchomić nawet bez zainstalowanego Rusta. Jeśli przekażesz komuś plik .rb, .py lub .js, ta osoba musi mieć zainstalowaną (odpowiednio) implementację Ruby, Pythona lub JavaScriptu. Ale w tych językach potrzebujesz tylko jednego polecenia, aby skompilować i uruchomić program. Wszystko jest kompromisem w projektowaniu języka.

Samo kompilowanie za pomocą rustc jest wystarczające dla prostych programów, ale w miarę rozrostu projektu będziesz chciał zarządzać wszystkimi opcjami i ułatwić udostępnianie kodu. Następnie przedstawimy narzędzie Cargo, które pomoże Ci pisać rzeczywiste programy w Ruście.