Having a IsDefault trait has already been discussed, and as a TL,DR: Default is a not a trait for null-ness or neutrality, but for having the ability to create some arbitrary inhabitant of the given type.
Source
- emphasis mine
Although concrete types may express additional invariants w.r.t. the actual instance created by Default::default(), there is no part of the contract specifying it. The values could change in between invocations, and the value may very well be "non-empty".
Having a IsDefault trait would thus contradict this purposely simple trait definition.
That being said, nothing forbids you from having your own IsDefault trait within your crate, or to publish a dedicated crate for this very functionality.