
Lifetimes
Lifetime-Annotationen, Elisionsregeln, 'static-Lifetime, Struct-Lifetimes, Lifetime-Bounds
1Was ist der Hauptzweck von Lifetimes in Rust?
Was ist der Hauptzweck von Lifetimes in Rust?
Antwort
Lifetimes ermöglichen es dem Compiler zu überprüfen, dass alle References während ihrer gesamten Verwendung gültig sind. Sie stellen sicher, dass eine Reference niemals länger lebt als die Daten, auf die sie verweist, und verhindern so Dangling References. Der Borrow Checker verwendet Lifetimes, um die Speichersicherheit zur Compile-Zeit zu validieren, ohne Laufzeit-Overhead.
2Welche Syntax wird verwendet, um eine Lifetime an einer Reference zu annotieren?
Welche Syntax wird verwendet, um eine Lifetime an einer Reference zu annotieren?
Antwort
Lifetimes werden mit einem Apostroph gefolgt von einem Namen annotiert, typischerweise einem Kleinbuchstaben wie 'a. Die Syntax &'a T bedeutet eine Reference auf T mit der Lifetime 'a. Konventionell werden 'a, 'b, 'c für generische Lifetimes verwendet, aber nach dem Apostroph kann jeder gültige Bezeichner stehen.
3Was bedeutet die 'static-Lifetime in Rust?
Was bedeutet die 'static-Lifetime in Rust?
Antwort
Die 'static-Lifetime gibt an, dass eine Reference während der gesamten Programmlaufzeit leben kann. String-Literale wie "hello" haben automatisch die 'static-Lifetime, weil sie in das Binary eingebettet sind. Globale Konstanten und mit Box::leak erstellte Werte haben ebenfalls diese Lifetime. Hinweis: 'static bedeutet nicht, dass der Wert seit Programmstart existiert, sondern dass er bis zum Ende leben kann.
Wie viele Lifetime-Elisionsregeln wendet der Rust-Compiler automatisch an?
Warum lässt sich eine Funktion fn longest(x: &str, y: &str) -> &str nicht kompilieren?
+17 Interview-Fragen
Weitere Rust-Interviewthemen
Rust-Grundlagen
Ownership & Borrowing
Structs & Enums
Fehlerbehandlung
Collections
Module & Packages
Traits
Generics
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makros
Serde & Serialisierung
Unsafe Rust
Fortgeschrittene Traits
Fortgeschrittene Lifetimes
Type System
Tokio & Async I/O
Performance-Optimierung
Memory Management
Web Frameworks
Database Integration
Rust Design Patterns
Meistere Rust für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten