Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, trait Deref e Drop

22 domande da colloquio·
Mid-Level
1

Qual è il caso d'uso principale di Box<T> in Rust?

Risposta

Box<T> alloca i dati sull'heap anziché sullo stack. È utile per tipi di dimensione sconosciuta in fase di compilazione (tipi ricorsivi), per trasferire l'ownership di grandi quantità di dati senza copiarle, o per creare trait object. Il puntatore Box stesso ha una dimensione fissa sullo stack.

2

Come definire un tipo ricorsivo come una linked list in Rust?

Risposta

Un tipo ricorsivo diretto come enum List { Cons(i32, List), Nil } non compila perché il compilatore non può determinarne la dimensione. Usando Box<List> si crea un'indirezione con dimensione fissa (puntatore), permettendo al compilatore di calcolare la dimensione del tipo.

3

Qual è la differenza principale tra Rc<T> e Arc<T>?

Risposta

Rc (Reference Counted) usa un contatore di riferimenti non atomico, il che lo rende più performante ma limitato a un singolo thread. Arc (Atomically Reference Counted) usa operazioni atomiche per il contatore, consentendo la condivisione tra thread ma con un leggero overhead di prestazioni.

4

Cosa abilita il trait Deref in Rust?

5

Cos'è la interior mutability (mutabilità interna) in Rust?

+19 domande da colloquio

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