use miden_crypto::stark::air::LiftedAirBuilder;
pub trait TaggingAirBuilderExt: LiftedAirBuilder {
fn tagged<R>(
&mut self,
id: usize,
namespace: &'static str,
f: impl FnOnce(&mut Self) -> R,
) -> R {
if !super::state::is_enabled() {
return f(self);
}
super::state::with_tag(vec![id], namespace, || f(self))
}
fn tagged_list<R, const N: usize>(
&mut self,
ids: [usize; N],
namespace: &'static str,
f: impl FnOnce(&mut Self) -> R,
) -> R {
if !super::state::is_enabled() {
return f(self);
}
super::state::with_tag(ids.to_vec(), namespace, || f(self))
}
}
impl<T: LiftedAirBuilder> TaggingAirBuilderExt for T {}