Il tratto Default
può essere #[derive(..)]
d solo se il contenuto del tipo derivante implementa anche Default
. Ciò significa che il tratto diventa più facile da usare e più è implementato. Tuttavia, noto che alcuni tipi di std
mancano di implementazioni, sebbene abbiano valori di default perfettamente validi (a volte dipendono da parametri generici).Perché il valore predefinito non è implementato per Mutex, RWLock, CondVar, Duration?
Mutex<T>
eRWLock<T>
potrebbe attuare danew(_)
(where T: Default
)CondVar
potrebbe semplicemente attuare daCondVar::new()
Duration
potrebbe derivare (per ottenere una durata nulla,che è un valore predefinito ragionevole)
Esiste un motivo tecnico per tali omissioni?
Non sarei d'accordo con * una durata zero, che è un predefinito ragionevole *, ma gli altri, certo. – Shepmaster
Perché? Pensi che non ci sia alcun difetto ragionevole o pensi che ce ne sia uno più ragionevole? – llogiq
Direi che non esiste un default sensato. La maggior parte delle volte penso alla durata per quanto riguarda i timeout, e un timeout di zero non ha senso per me e nessuno dei due sceglierà nessun altro valore. Anche se vedo che i numeri implementano 'Default' come' 0', quindi ¯ \\ _ (ツ) _/¯. – Shepmaster