#![allow(clippy::missing_inline_in_public_items)]
use core::fmt;
use core::marker::PhantomData;
use core::time::Duration;
use manyfmt::{Fmt, Refmt as _};
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[doc(hidden)] #[allow(clippy::exhaustive_structs)]
pub struct TypeName;
impl<T> Fmt<TypeName> for PhantomData<T> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &TypeName) -> fmt::Result {
write!(fmt, "{}", core::any::type_name::<T>())
}
}
#[allow(clippy::exhaustive_structs)]
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct ConciseDebug;
impl<T: Fmt<ConciseDebug>, const N: usize> Fmt<ConciseDebug> for [T; N] {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, fopt: &ConciseDebug) -> fmt::Result {
fmt.debug_list()
.entries(self.iter().map(|item| item.refmt(fopt)))
.finish()
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Point2D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "({:+.3?}, {:+.3?})", self.x, self.y)
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Point3D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "({:+.3?}, {:+.3?}, {:+.3?})", self.x, self.y, self.z)
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Vector2D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "({:+.3?}, {:+.3?})", self.x, self.y)
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Vector3D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "({:+.3?}, {:+.3?}, {:+.3?})", self.x, self.y, self.z)
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Size2D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "({:+.3?}, {:+.3?})", self.width, self.height)
}
}
impl<T: fmt::Debug, U> Fmt<ConciseDebug> for euclid::Size3D<T, U> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(
fmt,
"({:+.3?}, {:+.3?}, {:+.3?})",
self.width, self.height, self.depth
)
}
}
impl Fmt<ConciseDebug> for Duration {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>, _: &ConciseDebug) -> fmt::Result {
write!(fmt, "{:5.2?} ms", (self.as_micros() as f32) / 1000.0)
}
}