Wsparcie językowe
Ponowne ładowanie modelu projektu
W wersji 2022.2 poprawiono sposób, w jaki IntelliJ Rust aktualizuje model projektu.
Wtyczka wykrywa teraz zmiany w plikach konfiguracyjnych, nawet jeśli nie są one zapisane na dysku. Ta zmiana powinna sprawić, że ponowne ładowanie modelu projektu będzie bardziej przewidywalne.
IntelliJ Rust uwzględnia teraz również zmiany w konfiguracji Cargo, pliku toolchain i skryptach budowania.
Po zmianie plików konfiguracyjnych pojawi się teraz przycisk Załaduj zmiany ładunku.
Ustawienia ponownego ładowania modelu projektu można też zmienić w Preferencje / Ustawienia | Kompilacja, wykonanie, wdrażanie | Narzędzia do budowania.
Domyślnie pole wyboru Załaduj ponownie projekt po zmianach w skryptach kompilacji jest zaznaczone i wybrana jest opcja Zmiany zewnętrzne. Oznacza to, że model projektu zostanie automatycznie ponownie załadowany tylko w przypadku zmian zewnętrznych (na przykład, gdy pojawią się zaktualizowane pliki z kontroli wersji). W przypadku wszelkich zmian wprowadzonych w IDE będzie dostępny przycisk Załaduj zmiany ładunku, który umożliwia ręczne załadowanie zmian.
Przy wybraniu opcji Wszelkie zmiany, model projektu zostanie automatycznie zaktualizowany o wszystkie zmiany.
Ustawienia Cargo zostały przeniesione do Preferencji / Ustawienia | Kompilacja, wykonanie, wdrażanie | Narzędzia do budowania | Ładunek zapewniając spójność z innymi ustawieniami narzędzi do budowania.
Poprawa wydajności wywołań makr
Zrezygnowano z niepotrzebnego unieważnienia pamięci podręcznej. W rezultacie, przy wpisywaniu wywołania makr, uzupełnianie i podświetlanie powinno teraz działać szybciej.
Poprawy wnioskowania o typie
W tym cyklu wydawniczym wprowadzono różne poprawki i ulepszenia dotyczące wnioskowania o typie:
- W silniku wnioskowania o typie zaimplementowano wymuszenia. To naprawia błędy nieprawidłowo pozytywne, takie jak niezgodność typów między Box<[u8]> i Box<[u8; 4]>.
- Naprawiono wnioskowanie o typach parametrów zamknięcia, gdy zamknięcie jest przypisane do zmiennej, a typy parametrów są wywnioskowane po przypisaniu.
- Naprawiono użycie operatora ? z cechą Try. Niestabilna cecha Try została przeniesiona do core::ops::try_trait::Try, a nazwy powiązanych typów zostały zmienione. To rozwiązało wiele problemów. Na przykład teraz operator ? działa dla Poll
. Zapętlenie parametru typu implementującego cechę Iterator zostało naprawione i teraz działa zgodnie z oczekiwaniami. Niedawno dodana niestabilna cecha Destruct jest teraz dostępna dla wszystkich typów. Wtyczka uwzględnia teraz negatywny impl podczas wnioskowania o typach. Wnioskowanie o typie powinno teraz działać szybciej dzięki zmianom w sposobie obsługi typowych przypadków wnioskowania o typie.
Wykrywanie błędów kompilatora
IntelliJ Rust wykrywa teraz więcej błędów kompilatora:
- Podejmowana próba importu zawartości, podczas gdy zewnętrzna skrzynia o tej nazwie została już zaimportowana.
- Nazwa wybrana dla zewnętrznej skrzyni jest w konflikcie z inną zewnętrzną skrzynią, która została zaimportowana do bieżącego modułu.
- Nazwa deklaracji towaru jest w konflikcie z nazwą zewnętrznej skrzyni.
- Słowo kluczowe self nie może występować samodzielnie jako ostatni segment w deklaracji użycia.
- Autoimport pojawia się na liście więcej niż raz.
- Dokonano nieprawidłowego importu własnego.
- Widoczność jest ograniczona do modułu, który nie jest przodkiem aktualnego elementu.
Poprawiono również wykrywanie duplikatów definicji.
Obsługa #![recursion_limit] w rozwiązywaniu nazw
IntelliJ Rust bierze teraz pod uwagę atrybut #![recursion_limit], który kontroluje głębokość rozszerzania makr. Wcześniej wtyczka używała domyślnej wartości limitu rekurencji, która wynosiła 128 kroków. Ale niektóre makra wymagają więcej kroków, a ta poprawka umożliwia ich rozszerzenie.
Gdy nie ma potrzeby używania makr do pełnego rozwinięcia, można dostosować ustawienie Maksymalny limit rekurencji dla rozwijania makr.
Wgląd w kod
Kontrole zależności w Cargo.toml
Domyślnie włączono dwie inspekcje zależności w Cargo.toml: Nieprawidłowa wersja skrzynki i Dostępna nowa wersja skrzynki.
Inspekcja nieprawidłowych wersji skrzynek wykrywa skrzynki zależności z nieprawidłowymi wersjami w Cargo.toml.
Kontrola dostępności nowej wersji skrzynki informuje, że dostępna jest nowsza wersja skrzynki. Istnieje również szybka poprawka, aby zaktualizować wersję skrzynki, która jest dostępna z wyskakującego okienka inspekcji. Można zobaczyć wszystkie dostępne szybkie poprawki, naciskając ⌥↩ (Alt+Enter).
Można kontrolować ustawienia inspekcji w Preferencje / Ustawienia | Redaktor | Inspekcje | Rdza. Tutaj można wyłączyć inspekcje, zmienić poziom ważności dla konkretnej inspekcji (wyświetlany ikonami w IDE) lub wybrać sposób podświetlania odpowiedniego kodu w edytorze.
Kontrole pod kątem unused_must_use i clippy::double_must_use
Inspekcje i szybkie poprawki dla:
- lint unused_must_use, które wykrywa nieużywane wyniki typu oznaczonego jako #[must_use],
- lint clippy::double_must_use, który sprawdza atrybut #[must_use] bez dalszych informacji o funkcjach i metodach, które zwracają typ już oznaczony jako #[must_use].
Konwersja JSON na typy Rust za pomocą kopiowania i wklejania
Przy kopiowaniu danych JSON i wklejaniu ich w edytorze, IDE sugeruje przekonwertowanie ich na typ struktury. Wszystkie niezbędne znaczniki pól struktury będą generowane i dodawane automatycznie.
Zmiana nazwy refaktoryzacji dla metazmiennych w makrach
Refaktoryzacja zmiany nazwy działa teraz dla metazmiennych w makrach.
Wyróżnianie adresów URL w literałach ciągów
Adresy URL w literałach ciągów znaków są teraz podświetlane po najechaniu na nie kursorem i można je otwierać w przeglądarce. Aby otworzyć łącze, należy nacisnąć klawisz ⌘ (Ctrl) i kliknąć łącze.
Uruchom/Debuguj
Jeśli opcja Emuluj terminal w konsoli wyjściowej jest włączona, odpowiedni terminal jest teraz używany w zakładce Uruchom. Ta opcja działa teraz również w systemie Windows.
Można włączyć opcję Emuluj terminal w konsoli wyjściowej w ustawieniach konfiguracji Uruchamiania.