pub use crate::misc::{False, StaticBool, True};
pub trait ReuseAdvice {
type ShouldReuse: StaticBool + ?Sized;
}
pub trait ReuseAdviceBool: ReuseAdvice {
const SHOULD_REUSE: bool = <Self::ShouldReuse>::VALUE;
}
impl<Querier: ReuseAdvice + ?Sized> ReuseAdviceBool for Querier {}
pub trait ReuseAdviceSelf: ReuseAdvice {
fn should_reuse(&self) -> bool {
Self::SHOULD_REUSE
}
}
impl<Querier: ReuseAdvice + ?Sized> ReuseAdviceSelf for Querier {}
pub trait ShouldReuse: ReuseAdvice<ShouldReuse = True> {}
impl<Querier: ReuseAdvice<ShouldReuse = True> + ?Sized> ShouldReuse for Querier {}