Struct addr2line::lookup::LoopingLookup
source · pub(crate) struct LoopingLookup<T, L, F>{
continuation: L,
mutator: F,
}
Expand description
Some functions (e.g. find_frames
) require considering multiple
compilation units, each of which might require their own split DWARF
lookup (and thus produce a continuation).
We store the underlying continuation here as well as a mutator function
that will either a) decide that the result of this continuation is
what is needed and mutate it to the final result or b) produce another
LookupResult
. new_lookup
will in turn eagerly drive any non-continuation
LookupResult
with successive invocations of the mutator, until a new
continuation or a final result is produced. And finally, the impl of
LookupContinuation::resume
will call new_lookup
each time the
computation is resumed.
Fields§
§continuation: L
§mutator: F
Implementations§
source§impl<T, L, F> LoopingLookup<T, L, F>
impl<T, L, F> LoopingLookup<T, L, F>
pub(crate) fn new_complete(t: T) -> LookupResult<Self>
pub(crate) fn new_lookup(r: LookupResult<L>, mutator: F) -> LookupResult<Self>
Trait Implementations§
source§impl<T, L, F> LookupContinuation for LoopingLookup<T, L, F>
impl<T, L, F> LookupContinuation for LoopingLookup<T, L, F>
Auto Trait Implementations§
impl<T, L, F> Freeze for LoopingLookup<T, L, F>
impl<T, L, F> RefUnwindSafe for LoopingLookup<T, L, F>where
L: RefUnwindSafe,
F: RefUnwindSafe,
impl<T, L, F> Send for LoopingLookup<T, L, F>
impl<T, L, F> Sync for LoopingLookup<T, L, F>
impl<T, L, F> Unpin for LoopingLookup<T, L, F>
impl<T, L, F> UnwindSafe for LoopingLookup<T, L, F>where
L: UnwindSafe,
F: 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