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

Pakiety, Kapsuły (Crate) i Moduły

W miarę pisania dużych programów organizacja kodu staje się coraz ważniejsza.Grupując powiązane funkcjonalności i oddzielając kod o różnych cechach,wyjaśnisz, gdzie znaleźć kod implementujący określoną funkcję i gdzieudać się, aby zmienić sposób działania funkcji.

Napisane do tej pory programy znajdowały się w jednym module w jednym pliku. W miarę rozrastania się projektu, kod powinien być dzielony na wiele modułów, a następnie na wiele plików. Pakiet może zawierać wiele kapsuł binarnych i opcjonalnie jedną kapsułę biblioteczną. W miarę rozrastania się pakietu, można wyodrębnić jego części do osobnych kapsuł, które stają się zewnętrznymi zależnościami. Ten rozdział obejmuje wszystkie te techniki. Dla bardzo dużych projektów składających się z zestawu powiązanych ze sobą pakietów, które ewoluują razem, Cargo oferuje obszary robocze, które omówimy w sekcji „Obszary robocze Cargo” w Rozdziale 14.

Omówimy również hermetyzację szczegółów implementacji, co pozwala na ponowne wykorzystanie kodu na wyższym poziomie: po zaimplementowaniu operacji, inny kod może wywołać twój kod za pośrednictwem jego publicznego interfejsu, bez konieczności znajomości działania implementacji. Sposób, w jaki piszesz kod, określa, które części są publiczne do użytku przez inny kod, a które są prywatnymi szczegółami implementacji, które zastrzegasz sobie prawo do zmiany. Jest to kolejny sposób na ograniczenie ilości szczegółów, które musisz mieć w głowie.

Powiązaną koncepcją jest zasięg: zagnieżdżony kontekst, w którym pisany jest kod, ma zestaw nazw, które są zdefiniowane jako „w zasięgu”. Podczas czytania, pisania i kompilowania kodu, programiści i kompilatory muszą wiedzieć, czy dana nazwa w danym miejscu odnosi się do zmiennej, funkcji, struktury, typu wyliczeniowego, modułu, stałej lub innego elementu i co ten element oznacza. Możesz tworzyć zasięgi i zmieniać, które nazwy są w zasięgu lub poza nim. Nie możesz mieć dwóch elementów o tej samej nazwie w tym samym zasięgu; dostępne są narzędzia do rozwiązywania konfliktów nazw.

Rust ma szereg funkcji, które pozwalają zarządzać organizacją kodu, w tym to, które szczegóły są ujawniane, które są prywatne i jakie nazwy znajdują się w każdym zasięgu w twoich programach. Te funkcje, czasami zbiorczo nazywane systemem modułów, obejmują:

  • Pakiety: Funkcja Cargo, która umożliwia budowanie, testowanie i udostępnianie kapsuł (crates)
  • Kapsuły (Crates): Drzewo modułów, które produkuje bibliotekę lub plik wykonywalny
  • Moduły i use: Pozwalają kontrolować organizację, zasięg i prywatność ścieżek
  • Ścieżki: Sposób nazywania elementu, takiego jak struktura, funkcja lub moduł

W tym rozdziale omówimy wszystkie te funkcje, dowiemy się, jak ze sobą współdziałają i wyjaśnimy, jak używać ich do zarządzania zasięgiem. Na koniec powinieneś mieć solidne zrozumienie systemu modułów i być w stanie pracować z zasięgami jak profesjonalista!