Funkcje i profile
Kompilacja warunkowa
Funkcje i profile to bezpłatna lekcja Learn Rust Coding na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn Rust Coding, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Czym są funkcje opcjonalne?
Funkcje opcjonalne pozwalają włączać lub wyłączać opcjonalne części pakietu podczas kompilacji. Dzięki nim pakiety są elastyczne: użytkownicy płacą tylko za to, czego używają.
Deklarowanie funkcji opcjonalnych
Funkcje opcjonalne definiuje się w tabeli [features]. Każda funkcja może włączać inne funkcje lub opcjonalne zależności.
[features]
default = ["json"]
json = []
fast_math = []Kompilacja warunkowa
Kod można osłonić atrybutem cfg, aby był kompilowany tylko wtedy, gdy dana funkcja opcjonalna jest włączona.
#[cfg(feature = "json")]
fn export() {
println!("Exporting as JSON");
}
fn main() {
#[cfg(feature = "json")]
export();
}Włączanie funkcji opcjonalnych
Użytkownicy pakietu włączają funkcje opcjonalne w deklaracji zależności lub w wierszu poleceń.
[dependencies]
my_lib = { version = "1.0", features = ["fast_math"] }Funkcje domyślne
Funkcja default jest automatycznie włączona. Można ją wyłączyć za pomocą default-features = false, aby uzyskać minimalną kompilację.
[dependencies]
my_lib = { version = "1.0", default-features = false }Funkcje opcjonalne w interfejsie wiersza poleceń
Funkcje opcjonalne można także włączać i wyłączać dla poszczególnych poleceń bez edytowania manifestu.
cargo build --features fast_math
cargo run --no-default-features
cargo test --all-featuresCzym są profile?
Profile określają ustawienia kompilatora, takie jak poziom optymalizacji i informacje debugowania. Dwa wbudowane profile to dev (debugowanie) i release.
Profil dev
Profilu dev używa polecenie cargo build. Stawia on na szybkie kompilowanie i łatwe debugowanie, a nie na szybkość działania programu.
[profile.dev]
opt-level = 0
debug = trueProfil release
Profil release (używany wraz z --release) włącza optymalizacje, aby uzyskać szybkie pliki binarne.
[profile.release]
opt-level = 3
lto = true
strip = trueDostosowywanie profilu
Każdy profil można precyzyjnie dostosować. Można na przykład włączyć niewielką optymalizację w kompilacjach dev, aby przyspieszyć działanie programu, zachowując szybkie kompilowanie zależności.
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 3Opcjonalne zależności jako funkcje opcjonalne
Opcjonalna zależność domyślnie tworzy funkcję opcjonalną o tej samej nazwie. Włączenie tej funkcji dołącza zależność, dzięki czemu użytkownicy korzystają z cięższych pakietów tylko wtedy, gdy są potrzebne.
[dependencies]
serde = { version = "1.0", optional = true }
[features]
serialize = ["dep:serde"]Szybkie sprawdzenie
Jaki atrybut kompiluje blok kodu tylko wtedy, gdy funkcja opcjonalna jest włączona?
Podsumowanie
Dowiedziałeś się o narzędziach kompilacji warunkowej:
[features]deklaruje opcjonalne funkcje#[cfg(feature = ...)]warunkowo włącza kod na podstawie funkcjidefault-features = falsepozwala uzyskać minimalną kompilację- Profile, takie jak
devirelease, sterują optymalizacją oraz ustawieniami debugowania
Ucz się Rust dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 39
- Lekcje
- 144
Często zadawane pytania
Czy lekcja „Funkcje i profile” jest bezpłatna?
Tak — pełny tekst „Funkcje i profile” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn Rust Coding, przejdź na CoddyKit PRO. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Co nauczysz się w „Funkcje i profile”?
Kompilacja warunkowa Ćwiczysz Learn Rust Coding z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn Rust Coding?
Nie wymagamy żadnego doświadczenia. Learn Rust Coding w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Funkcje i profile”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn Rust Coding?
Tak. Każda lekcja Learn Rust Coding zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy Cargo
- Cargo.toml
- Obszary robocze
- Funkcje i profile