Skip to main content

LeanProgressCallback

Struct LeanProgressCallback 

Source
pub struct LeanProgressCallback<'a> { /* private fields */ }
Expand description

Scoped progress callback registration for one synchronous Lean call.

Unlike LeanCallbackHandle<LeanProgressTick>, the registered closure may borrow from the caller. lean-rs keeps that borrowed context alive until after the callback handle is unregistered, so host crates do not need raw context pointers or stack-lifetime trampolines to report progress.

Lean must not store the (handle, trampoline) pair or invoke it after the synchronous export call has returned. A stale call after drop returns LeanCallbackStatus::StaleHandle, but retaining the values beyond the call violates the scoped callback contract.

Implementations§

Source§

impl<'a> LeanProgressCallback<'a>

Source

pub fn register<F>(callback: F) -> LeanResult<Self>

Register a progress callback whose closure may borrow from the caller.

The returned value must stay alive until Lean can no longer invoke the callback. Dropping it unregisters the handle before releasing the borrowed callback context.

§Errors

Returns LeanError::Host with diagnostic code crate::LeanDiagnosticCode::Internal if the callback registry cannot allocate a fresh nonzero id.

Source

pub fn abi_parts(&self) -> (usize, usize)

Return (handle, trampoline) for Lean progress exports using the standard two-USize callback ABI.

Source

pub fn decode_result<'lean, T>(&self, obj: Obj<'lean>) -> LeanResult<T>
where T: TryFromLean<'lean>,

Decode a Lean progress-shim result.

Host progress shims return Except UInt8 T, with Except.ok carrying the real result and Except.error carrying a LeanCallbackStatus byte. This method maps callback panic, stale-handle, wrong-payload, and stop statuses into LeanError while the callback handle is still live, so callers do not need to inspect raw status bytes.

§Errors

Returns a conversion error if the object is not a Lean Except UInt8 T shape, or a host error if the callback status reports a contained panic or callback invariant failure.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more