Dodatek E: Edycje
W Rozdziale 1 widziałeś, że cargo new dodaje nieco metadanych do pliku Cargo.toml dotyczących edycji. Ten dodatek opowiada o tym, co to oznacza!
Język i kompilator Rust mają sześciotygodniowy cykl wydawniczy, co oznacza, że użytkownicy otrzymują stały strumień nowych funkcji. Inne języki programowania rzadziej wydają większe zmiany; Rust częściej wydaje mniejsze aktualizacje. Po pewnym czasie wszystkie te drobne zmiany sumują się. Ale z wydania na wydanie trudno jest spojrzeć wstecz i powiedzieć: „Wow, między Rustem 1.10 a Rustem 1.31 Rust bardzo się zmienił!”
Co około trzy lata zespół Rust tworzy nową edycję Rust. Każda edycja łączy funkcje, które wylądowały, w przejrzysty pakiet z w pełni zaktualizowaną dokumentacją i narzędziami. Nowe edycje są dostarczane w ramach zwykłego sześciotygodniowego procesu wydawniczego.
Edycje służą różnym celom dla różnych ludzi:
- Dla aktywnych użytkowników Rusta, nowa edycja łączy stopniowe zmiany w łatwy do zrozumienia pakiet.
- Dla nie-użytkowników, nowa edycja sygnalizuje, że nastąpiły pewne poważne postępy, co może sprawić, że Rust będzie wart ponownego rozważenia.
- Dla tych, którzy rozwijają Rusta, nowa edycja stanowi punkt zborny dla całego projektu.
W chwili pisania tego tekstu dostępne są cztery edycje Rusta: Rust 2015, Rust 2018, Rust 2021 i Rust 2024. Ta książka jest napisana z użyciem idiomów edycji Rust 2024.
Klucz edition w Cargo.toml wskazuje, której edycji kompilator powinien używać dla twojego kodu. Jeśli klucz nie istnieje, Rust używa 2015 jako wartości edycji z powodu kompatybilności wstecznej.
Każdy projekt może zdecydować się na edycję inną niż domyślna edycja 2015. Edycje mogą zawierać niekompatybilne zmiany, takie jak włączenie nowego słowa kluczowego, które koliduje z identyfikatorami w kodzie. Jednak, jeśli nie zdecydujesz się na te zmiany, twój kod będzie nadal kompilować się, nawet jeśli zaktualizujesz wersję kompilatora Rust, której używasz.
Wszystkie wersje kompilatora Rust obsługują każdą edycję, która istniała przed wydaniem tego kompilatora, i mogą łączyć skrzynki z dowolnych obsługiwanych edycji. Zmiany edycji wpływają tylko na sposób, w jaki kompilator początkowo parsuje kod. Dlatego, jeśli używasz Rust 2015, a jedna z twoich zależności używa Rust 2018, twój projekt skompiluje się i będzie mógł używać tej zależności. Sytuacja odwrotna, w której twój projekt używa Rust 2018, a zależność używa Rust 2015, również działa.
Aby było jasne: większość funkcji będzie dostępna we wszystkich edycjach. Programiści używający dowolnej edycji Rust nadal będą widzieć ulepszenia w miarę pojawiania się nowych stabilnych wydań. Jednak w niektórych przypadkach, głównie gdy dodawane są nowe słowa kluczowe, niektóre nowe funkcje mogą być dostępne tylko w późniejszych edycjach. Będziesz musiał zmienić edycję, jeśli chcesz skorzystać z takich funkcji.
Więcej szczegółów znajdziesz w Przewodniku po Edycjach Rust. Jest to kompletna książka, która wylicza różnice między edycjami i wyjaśnia, jak automatycznie zaktualizować kod do nowej edycji za pomocą cargo fix.