#![cfg_attr(feature = "docsrs", doc(cfg(feature = "rust_1_65")))]
use crate::{BaseTypeWitness, TypeCmp, TypeEq, TypeNe};
use core::fmt::Debug;
pub trait BaseTypeWitnessTc: 'static + Copy + Debug {
type Type<L: ?Sized, R: ?Sized>: BaseTypeWitness<L = L, R = R, TypeCtor = Self>;
}
pub type TcToBaseTypeWitness<TC, L, R> = <TC as BaseTypeWitnessTc>::Type::<L, R>;
pub type BaseTypeWitnessToTc<W> = <W as BaseTypeWitness>::TypeCtor;
pub type BaseTypeWitnessReparam<W, L, R> =
<BaseTypeWitnessToTc<W> as BaseTypeWitnessTc>::Type::<
L,
R,
>;
pub type MapBaseTypeWitness<W, F> =
<BaseTypeWitnessToTc<W> as BaseTypeWitnessTc>::Type::<
crate::CallFn<F, <W as BaseTypeWitness>::L>,
crate::CallFn<F, <W as BaseTypeWitness>::R>,
>;
#[derive(Debug, Copy, Clone)]
pub struct TcTypeCmp;
impl BaseTypeWitnessTc for TcTypeCmp {
type Type<L: ?Sized, R: ?Sized> = TypeCmp<L, R>;
}
#[derive(Debug, Copy, Clone)]
pub struct TcTypeEq;
impl BaseTypeWitnessTc for TcTypeEq {
type Type<L: ?Sized, R: ?Sized> = TypeEq<L, R>;
}
#[derive(Debug, Copy, Clone)]
pub struct TcTypeNe;
impl BaseTypeWitnessTc for TcTypeNe {
type Type<L: ?Sized, R: ?Sized> = TypeNe<L, R>;
}