pub struct RecordingHandler<H: Handler> { /* private fields */ }Expand description
A genuine [fugue::Handler] that records the sequence of sampled sites while
delegating all effect handling (and therefore all log-weight bookkeeping)
to an inner handler.
This is a real Poutine-style trace effect: it observes the execution
without changing its semantics. Because every effect is forwarded to
inner, the resulting trace has exactly the same log_prior,
log_likelihood, and log_factors the inner handler would have produced on
its own — only now the ordered list of (address, value) sample events is
also available via RecordingHandler::events.
Implementations§
Source§impl<H: Handler> RecordingHandler<H>
impl<H: Handler> RecordingHandler<H>
Trait Implementations§
Source§impl<H: Handler> Handler for RecordingHandler<H>
impl<H: Handler> Handler for RecordingHandler<H>
Source§fn on_sample_f64(&mut self, addr: &Address, dist: &dyn Distribution<f64>) -> f64
fn on_sample_f64(&mut self, addr: &Address, dist: &dyn Distribution<f64>) -> f64
Handle an f64 sampling operation (continuous distributions).
Source§fn on_sample_bool(
&mut self,
addr: &Address,
dist: &dyn Distribution<bool>,
) -> bool
fn on_sample_bool( &mut self, addr: &Address, dist: &dyn Distribution<bool>, ) -> bool
Handle a bool sampling operation (Bernoulli).
Source§fn on_sample_u64(&mut self, addr: &Address, dist: &dyn Distribution<u64>) -> u64
fn on_sample_u64(&mut self, addr: &Address, dist: &dyn Distribution<u64>) -> u64
Handle a u64 sampling operation (Poisson, Binomial).
Source§fn on_sample_usize(
&mut self,
addr: &Address,
dist: &dyn Distribution<usize>,
) -> usize
fn on_sample_usize( &mut self, addr: &Address, dist: &dyn Distribution<usize>, ) -> usize
Handle a usize sampling operation (Categorical).
Source§fn on_observe_f64(
&mut self,
addr: &Address,
dist: &dyn Distribution<f64>,
value: f64,
)
fn on_observe_f64( &mut self, addr: &Address, dist: &dyn Distribution<f64>, value: f64, )
Handle an f64 observation operation.
Source§fn on_observe_bool(
&mut self,
addr: &Address,
dist: &dyn Distribution<bool>,
value: bool,
)
fn on_observe_bool( &mut self, addr: &Address, dist: &dyn Distribution<bool>, value: bool, )
Handle a bool observation operation.
Source§fn on_observe_u64(
&mut self,
addr: &Address,
dist: &dyn Distribution<u64>,
value: u64,
)
fn on_observe_u64( &mut self, addr: &Address, dist: &dyn Distribution<u64>, value: u64, )
Handle a u64 observation operation.
Source§fn on_observe_usize(
&mut self,
addr: &Address,
dist: &dyn Distribution<usize>,
value: usize,
)
fn on_observe_usize( &mut self, addr: &Address, dist: &dyn Distribution<usize>, value: usize, )
Handle a usize observation operation.
§fn on_sample_i64(
&mut self,
addr: &Address,
_dist: &dyn Distribution<i64>,
) -> i64
fn on_sample_i64( &mut self, addr: &Address, _dist: &dyn Distribution<i64>, ) -> i64
Handle an i64 sampling operation (signed discrete distributions). Read more
§fn on_observe_i64(
&mut self,
addr: &Address,
_dist: &dyn Distribution<i64>,
_value: i64,
)
fn on_observe_i64( &mut self, addr: &Address, _dist: &dyn Distribution<i64>, _value: i64, )
Handle an i64 observation operation. Read more
Auto Trait Implementations§
impl<H> Freeze for RecordingHandler<H>where
H: Freeze,
impl<H> RefUnwindSafe for RecordingHandler<H>where
H: RefUnwindSafe,
impl<H> Send for RecordingHandler<H>where
H: Send,
impl<H> Sync for RecordingHandler<H>where
H: Sync,
impl<H> Unpin for RecordingHandler<H>where
H: Unpin,
impl<H> UnsafeUnpin for RecordingHandler<H>where
H: UnsafeUnpin,
impl<H> UnwindSafe for RecordingHandler<H>where
H: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.