use crate::*;
impl<T: ?Sized + ToOutput> ToOutput for &T {
fn to_output(&self, output: &mut (impl ?Sized + Output)) {
(**self).to_output(output);
}
fn vec(&self) -> Vec<u8> {
(**self).vec()
}
}
impl<T: ?Sized + InlineOutput> InlineOutput for &T {}
impl<T: ?Sized + ListHashes> ListHashes for &T {
fn list_hashes(&self, f: &mut (impl ?Sized + FnMut(Hash))) {
(**self).list_hashes(f);
}
fn topology_hash(&self) -> Hash {
(**self).topology_hash()
}
fn point_count(&self) -> usize {
(**self).point_count()
}
}
impl<T: ?Sized + Tagged> Tagged for &T {
const TAGS: Tags = T::TAGS;
const HASH: Hash = T::HASH;
}
impl<T: ?Sized + Topological> Topological for &T {
fn traverse(&self, visitor: &mut (impl ?Sized + PointVisitor)) {
(**self).traverse(visitor);
}
fn topology(&self) -> TopoVec {
(**self).topology()
}
fn to_resolve(&self) -> Arc<dyn Resolve> {
(**self).to_resolve()
}
}
impl<T: ?Sized + ByteOrd> ByteOrd for &T {
fn bytes_cmp(&self, other: &Self) -> std::cmp::Ordering {
(**self).bytes_cmp(other)
}
}
impl<T: ?Sized + Size> Size for &T {
type Size = T::Size;
const SIZE: usize = T::SIZE;
}
impl<T: ?Sized + MaybeHasNiche> MaybeHasNiche for &T {
type MnArray = T::MnArray;
}
impl<T: ?Sized + Output> Output for &mut T {
fn write(&mut self, data: &[u8]) {
(**self).write(data);
}
fn is_real(&self) -> bool {
(**self).is_real()
}
fn is_mangling(&self) -> bool {
(**self).is_mangling()
}
}
impl<T: ?Sized + PointVisitor> PointVisitor for &mut T {
fn visit(&mut self, point: &(impl 'static + SingularFetch<T: Traversible> + Clone)) {
(**self).visit(point);
}
}