Nelle compilazioni di debug Rust include controlli di overflow per le operazioni intere che generano panic immediato se un'addizione o moltiplicazione supera il valore massimo del tipo; si risolve con i metodi wrapping_* o saturating_*.
PANIC_OVERFLOW
→
In Rust le divisioni intere per zero generano un panic immediato del thread a runtime, a differenza delle divisioni floating-point che restituiscono 'inf' o 'NaN'.
PANIC_DIV_ZERO
→
L'errore è tra i panic a runtime più frequenti nei principianti: chiamare '.unwrap()' su un'Option senza gestire il caso in cui il valore ritornato sia 'None'; si risolve con pattern matching 'if let', 'match' o '?''.
PANIC_UNWRAP_NONE
→
Il panic a runtime si verifica quando si invoca '.unwrap()' o '.expect()' su un'istanza di Result contenente un errore (Err) anziché propagarlo con l'operatore '?' o gestirlo formalmente.
PANIC_UNWRAP_ERR
→
L'allocazione di un Vec o String con una capacità predeterminata ('Vec::with_capacity(n)') fallisce con un panic se la moltiplicazione tra elementi e 'sizeof(T)' supera 'isize::MAX' byte.
PANIC_CAPACITY_OVERFLOW
→
Se un distruttore (Drop) lancia un secondo panic mentre il runtime di Rust sta già effettuando lo stack unwinding per un panic precedente, il processo viene terminato forzatamente senza possibilità di recupero.
PANIC_DOUBLE_PANIC_ABORT
→
Viene eseguito un ramo logico contrassegnato con la macro 'unreachable!()', evidenziando un bug algoritmico in cui una condizione teoricamente impossibile si è invece verificata.
PANIC_UNREACHABLE
→
L'errore causa la terminazione immediata del processo senza eseguire i distruttori (unwind non possibile) a causa del superamento della capacità massima dello stack thread (default 2MB) per via di chiamate ricorsive senza caso base.
STACK_OVERFLOW_RECURSION
→