antifacet 0.1.0

crate for general utilities
Documentation
use {
	facet::Facet,
	facet_reflect::Peek,
};

use crate::cmp::EqReport;

#[cold]
#[track_caller]
pub fn do_panic<'facet>(
	report: Peek<'_, 'facet>,
	lhs: Peek<'_, 'facet>,
	rhs: Peek<'_, 'facet>,
) -> ! {
	let fmt = crate::format::DiffPrinter::default().peek_as_format(report, lhs, rhs);
	::core::panic!("{fmt}");
}

#[track_caller]
pub fn assert_eq<'facet, T: ?Sized + Facet<'facet>, Cmp: EqReport<T, Report: Facet<'facet>>>(
	lhs: &T,
	rhs: &T,
	cmp: &Cmp,
) {
	if let Err(report) = crate::cmp::EqReport::eq_report(cmp, lhs, rhs) {
		do_panic(Peek::new(&report), Peek::new(lhs), Peek::new(rhs))
	}
}