Obsługa języka Rust w ASfP

Omówienie

Rust to nowoczesny język programowania systemowego, który koncentruje się na wydajności i bezpieczeństwie, zwłaszcza bezpieczeństwie pamięci. Rust odgrywa coraz większą rolę w ekosystemie Androida jako bezpieczniejsza alternatywa dla C/C++ w przypadku tworzenia kluczowych komponentów systemu, zapewniająca większe bezpieczeństwo i stabilność.

Na tej stronie znajdziesz instrukcje konfigurowania Android Studio for Platform (ASfP) w celu obsługi tworzenia kodu w języku Rust w projektach Android Open Source Project (AOSP).

Wymagania wstępne

  • Zainstalowano ASfP: sprawdź, czy ASfP jest zainstalowany i działa.
  • Płatność na platformie: na komputerze musisz mieć działającą płatność na platformie AOSP.

Włączanie obsługi języka Rust

Oto instrukcja krok po kroku, jak włączyć obsługę Rusta w projekcie ASfP:

  1. Włącz Rust

    • Podczas tworzenia nowego projektu w kreatorze konfiguracji po prostu zaznacz pole Rust:
    Pole wyboru Rust w kreatorze konfiguracji nowego projektu.
    Pole wyboru Rust w kreatorze konfiguracji nowego projektu.
    • W przypadku istniejących projektów otwórz konfigurację .asfp-project i dodaj rust do other_languages:
        other_languages:
          -   cpp
          -   rust
        ```
    
    <figure>
          <img src="/studio/platform/images/1-modify_asfp_project_languages.png" alt="Modifying the .asfp-project file to add rust to other_languages" class="screenshot">
          <figcaption>Adding Rust support in the <code>.asfp-project</code> file.</figcaption>
        </figure>
    
  1. Synchronizacja projektu:

    • Po wykonaniu powyższych czynności musisz wywołać synchronizację projektu, aby upewnić się, że wszystkie zmiany zostały zastosowane, a IDE rozpoznaje projekt Rust: kliknij File > Sync Project (Plik > Synchronizuj projekt).

Sprawdzanie powodzenia

Po wykonaniu tych czynności:

  • W widoku projektu (w sekcji źródłowej iml) powinien pojawić się tekst rust-project.json. Ten plik jest generowany przez Soong podczas analizy i łączony symbolicznie z głównym katalogiem repozytorium, co jest niezbędne, aby LSP mogło świadczyć usługi językowe. NIE edytuj tego pliku bezpośrednio. Zamiast tego ponownie zsynchronizuj go, aby Soong mógł go obsłużyć.

    Przypominamy, że w konfiguracji .asfp-project w sekcji other_languages musi być wpisany adres rust.

    Sprawdź, czy plik rust-project.json został wygenerowany.
    Sprawdź, czy został wygenerowany element rust-project.json.
  • W IDE powinny być włączone funkcje specyficzne dla języka Rust (opisane i pokazane poniżej).

Najważniejsze funkcje IDE Rust

  • Uzupełnianie kodu: otrzymuj inteligentne sugestie dotyczące kodu w języku Rust, w tym elementy z innych modułów.

    Przykład uzupełniania kodu w Rust w wielu modułach
    Autouzupełnianie kodu z sugestiami elementów z innego modułu Rust.

  • Nawigacja: szybko przechodź do definicji i znajduj użycia symboli języka Rust w projekcie.

    Przykład nawigacji po kodzie w Rust
    Przechodzenie do definicji symbolu w języku Rust.
    Przykład użycia funkcji Znajdź użycia w Rust
    Znajdowanie wszystkich zastosowań symbolu Rust.

  • Etykietki: najeżdżaj kursorem na symbole, aby wyświetlić informacje o typie i dokumentację.

    Przykład etykietki w Rust
    Etykietka z informacjami o typie symbolu Rust z innego modułu.

  • Wskazówki wstawiane: wyświetlaj informacje o typie i inne wskazówki kontekstowe bezpośrednio w edytorze.

    Przykład podpowiedzi wstawianych w Rust
    Wskazówki wstawiane, które wyświetlają informacje o typie w kodzie.

  • Widok struktury: przeglądaj strukturę plików Rust za pomocą okna narzędziowego Struktura (Widok > Okna narzędziowe > Struktura).

    Przykład widoku struktury w Rust
    Okno narzędziowe struktury z konspektem pliku Rust.

  • Refaktoryzacja: bezpieczne zmienianie nazw symboli i aktualizowanie wszystkich miejsc ich użycia.

    Przykład refaktoryzacji zmiany nazwy symbolu w języku Rust
    Zmiana nazwy symbolu Rust i aktualizacja wszystkich jego odwołań.

  • Analiza w czasie rzeczywistym: otrzymuj natychmiastowe informacje o błędach i ostrzeżeniach w kodzie Rust.

    Przykład analizy kodu w czasie rzeczywistym w języku Rust
    IDE showing real-time errors and warnings in Rust code.