//! Trait detection logic without using specialization.
//!
//! Inspired by the [impls](https://github.com/nvzqz/impls#how-it-works) crate.
//!
//! [`DebugDetector`] implements the method `as_debug` twice.
//! Once as a conditionally implemented inherent method always returning `Some(&dyn Debug)` and once as a trait method always returning `None`.
//!
//! An inherent method has priority over a trait method of the same name.
//!
//! Using `DebugDetector::<SomeType>::as_debug(&something)` then acts as a trait detector.
//!
//! Note that if `SomeType` is generic the detector won't work.
use Debug;
/// Fallback trait implemented by DebugDetector.
/// Zero size struct, acting as a trait Detector.
;