Rust

Lifetimes

Adnotacje lifetime, reguły elizji, lifetime 'static, lifetime w struct, lifetime bounds

20 pytań z rozmów·
Mid-Level
1

Jaki jest główny cel lifetime w Rust?

Odpowiedź

Lifetime pozwalają compilerowi zweryfikować, że wszystkie reference są poprawne przez cały czas ich użycia. Gwarantują, że reference nigdy nie przeżyje danych, do których się odwołuje, zapobiegając dangling reference. Borrow checker używa lifetime do walidacji bezpieczeństwa pamięci w czasie kompilacji, bez narzutu w czasie wykonania.

2

Jakiej składni używa się do oznaczenia lifetime na reference?

Odpowiedź

Lifetime są oznaczane apostrofem, po którym następuje nazwa, zazwyczaj mała litera jak 'a. Składnia &'a T oznacza reference do T z lifetime 'a. Zgodnie z konwencją, dla generycznych lifetime używa się 'a, 'b, 'c, ale po apostrofie można użyć dowolnego poprawnego identyfikatora.

3

Co oznacza lifetime 'static w Rust?

Odpowiedź

Lifetime 'static wskazuje, że reference może żyć przez cały czas trwania programu. String literale takie jak "hello" automatycznie mają lifetime 'static, ponieważ są osadzone w binarce. Globalne stałe oraz wartości utworzone za pomocą Box::leak również mają ten lifetime. Uwaga: 'static nie oznacza, że wartość istniała od początku programu, lecz że może żyć aż do końca.

4

Ile reguł elizji lifetime compiler Rust stosuje automatycznie?

5

Dlaczego funkcja fn longest(x: &str, y: &str) -> &str się nie kompiluje?

+17 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo