
Lifetimes
Annotazioni lifetime, regole di elisione, lifetime 'static, lifetime nelle struct, lifetime bounds
1Qual è lo scopo principale dei lifetime in Rust?
Qual è lo scopo principale dei lifetime in Rust?
Risposta
I lifetime permettono al compiler di verificare che tutte le reference siano valide per l'intera durata del loro utilizzo. Garantiscono che una reference non sopravviva mai ai dati a cui si riferisce, prevenendo le dangling reference. Il borrow checker usa i lifetime per validare la sicurezza della memoria in fase di compilazione, senza overhead a runtime.
2Quale sintassi si usa per annotare un lifetime su una reference?
Quale sintassi si usa per annotare un lifetime su una reference?
Risposta
I lifetime vengono annotati con un apostrofo seguito da un nome, tipicamente una lettera minuscola come 'a. La sintassi &'a T indica una reference a T con il lifetime 'a. Per convenzione si usano 'a, 'b, 'c per i lifetime generici, ma dopo l'apostrofo può essere usato qualsiasi identificatore valido.
3Cosa significa il lifetime 'static in Rust?
Cosa significa il lifetime 'static in Rust?
Risposta
Il lifetime 'static indica che una reference può vivere per l'intera durata del programma. Le string literal come "hello" hanno automaticamente il lifetime 'static perché sono incorporate nel binary. Anche le costanti globali e i valori creati con Box::leak hanno questo lifetime. Attenzione: 'static non significa che il valore esistesse dall'avvio del programma, ma che può vivere fino alla fine.
Quante regole di elisione dei lifetime applica automaticamente il compiler di Rust?
Perché una funzione fn longest(x: &str, y: &str) -> &str non compila?
+17 domande da colloquio
Altri argomenti di colloquio Rust
Fondamenti di Rust
Ownership & Borrowing
Structs & Enums
Gestione degli errori
Collezioni
Moduli e package
Traits
Generics
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde e serializzazione
Unsafe Rust
Trait avanzati
Lifetime Avanzati
Type System
Tokio & Async I/O
Ottimizzazione delle Prestazioni
Memory Management
Web Frameworks
Database Integration
Design Pattern in Rust
Padroneggia Rust per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis