use crate::{
any::static_wrapper::OwnedStatic,
protocol::{visitor::Value, Effect},
};
use core::{mem::MaybeUninit, ops::ControlFlow};
use crate::{
any_trait,
protocol::{
visitor::{RequestHint, Sequence, SequenceScope, Status},
walker::{Hint, HintMeta},
ControlFlowFor, SyncEffect, Visitor,
},
};
impl<'a, 'ctx> crate::Walk<'a, 'ctx> for bool {
type Walker = Walker;
}
pub struct Walker(bool);
impl<'ctx> From<bool> for Walker {
fn from(value: bool) -> Self {
Self(value)
}
}
impl<'a, 'ctx> crate::Walker<'a, 'ctx> for Walker {
type Effect = SyncEffect;
type Error = ();
type Output = ();
#[inline]
fn walk(
self,
visitor: Visitor<'a, 'ctx, SyncEffect>,
) -> ControlFlowFor<'a, 'ctx, Self::Effect, Self::Output, Self::Error> {
{
if let Some(object) = visitor.upcast_mut::<dyn Value<'_, OwnedStatic<bool>> + '_>() {
object.visit(OwnedStatic(self.0));
}
ControlFlow::Continue(())
}
}
}