Skip to main content

Lease

Struct Lease 

Source
pub struct Lease<A: Address, K, Route: DeliveryRoute<Protocol: Protocol<Addr = A, Msg = LeaseOutcome<K>>>> { /* private fields */ }
Expand description

Exclusive expiring ownership behavior.

Acquisition is accepted only while vacant and commits a fresh generation before emitting its schedule. Renewal and release require the exact holder and generation. Matching elapsed evidence expires ownership; wrong timer IDs and stale generations are inert. Release cannot retract an already queued elapsed observation, so later evidence is explicitly stale. Once the finite generation domain is consumed, the vacant state becomes Exhausted and no successful ownership can be created. Initialization is empty, no actors are created, and the host never terminates by policy. Exclusivity, checked generation progression, and commit-before-schedule ordering are Bombay policy. Scheduling and sleeping belong to Timers. The current Bombay timer adapter has no cancellation effect lane; release is semantically immediate while the stale queue entry may remain until due. No transition panics.

Implementations§

Source§

impl<A, K, Route> Lease<A, K, Route>
where A: Address, K: Clone + Eq, Route: DeliveryRoute<Protocol: Protocol<Addr = A, Msg = LeaseOutcome<K>>> + Clone,

Source

pub const fn new(id: TimerId) -> Self

Construct a vacant lease using one actor-local timer key.

Source

pub const fn state(&self) -> &LeaseState<K, Route>

Borrow the complete ownership phase.

Trait Implementations§

Source§

impl<A, K, Route> Behavior for Lease<A, K, Route>
where A: Address, K: Clone + Eq, Route: DeliveryRoute<Protocol: Protocol<Addr = A, Msg = LeaseOutcome<K>>> + Clone, Route::Sends: SendsFor<TimedEvent<User<A, LeaseMessage<K, Route>>>>,

Source§

type Protocol = Lease<A, K, Route>

Stable public communication identity owned by this actor template. Read more
Source§

type Event = EventLayer<TimerElapsed, User<A, <<Lease<A, K, Route> as Behavior>::Protocol as Protocol>::Msg>>

Source§

type Sends = LeaseSends<<Route as DeliveryRoute>::Sends, InterpreterRequests<ScheduleAfter>>

Source§

type Ph = Never

Source§

type Error = Never

Source§

type Birth = NoBirths

Source§

fn transition( &mut self, _: ActiveTurn, event: Self::Event, ) -> BehaviorActed<Self>

Fold exactly one event into explicit actions and the next behavior. Read more
Source§

fn init( &mut self, _turn: InitializationTurn, ) -> Result<Actions<<Self::Protocol as Protocol>::Addr, Self::Ph, Self::Sends, Self::Birth>, Self::Error>
where Self: Sized,

Produce initialization actions before the first event is accepted. Read more
Source§

fn layer<L>(self, layer: L) -> <L as BehaviorLayer<Self>>::Output
where Self: Sized, L: BehaviorLayer<Self>,

Apply one statically dispatched construction layer. Read more
Source§

impl<A, K, Route> BehaviorBase for Lease<A, K, Route>
where A: Address, Route: DeliveryRoute<Protocol: Protocol<Addr = A, Msg = LeaseOutcome<K>>>,

Source§

type Base = Lease<A, K, Route>

Source§

fn base(&self) -> &Self

Source§

impl<A, K, Route> Protocol for Lease<A, K, Route>
where A: Address, Route: DeliveryRoute<Protocol: Protocol<Addr = A, Msg = LeaseOutcome<K>>>,

Source§

type Addr = A

Source§

type Msg = LeaseMessage<K, Route>

Auto Trait Implementations§

§

impl<A, K, Route> Freeze for Lease<A, K, Route>
where K: Freeze, Route: Freeze,

§

impl<A, K, Route> RefUnwindSafe for Lease<A, K, Route>
where K: RefUnwindSafe, Route: RefUnwindSafe,

§

impl<A, K, Route> Send for Lease<A, K, Route>
where K: Send, Route: Send,

§

impl<A, K, Route> Sync for Lease<A, K, Route>
where K: Sync, Route: Sync,

§

impl<A, K, Route> Unpin for Lease<A, K, Route>
where K: Unpin, Route: Unpin,

§

impl<A, K, Route> UnsafeUnpin for Lease<A, K, Route>
where K: UnsafeUnpin, Route: UnsafeUnpin,

§

impl<A, K, Route> UnwindSafe for Lease<A, K, Route>
where K: UnwindSafe, Route: UnwindSafe,

Blanket Implementations§

Source§

impl<B> Activate for B
where B: Behavior,

Source§

fn initialize(self) -> Result<Initialized<Self>, Self::Error>

Consume this definition, perform its one initialization fold, and return the active behavior together with the ordered initialization effects. Read more
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<B> BeginShutdownPhases for B
where B: Behavior, <<B as Behavior>::Birth as BirthMode>::Child: ChildOccurrenceProduct<AvailableChildren>,

Source§

impl<Node> BirthNodeAppend<Never> for Node
where Node: NonEmptyBirthNode,

Source§

type Output = Node

Closed child algebra containing the complete prefix followed by the complete appended tail.
Source§

fn append_prefix(self) -> <Node as BirthNodeAppend<Never>>::Output

Inject one child from the existing prefix without changing its structural occurrence.
Source§

fn append_tail(tail: Never) -> <Node as BirthNodeAppend<Never>>::Output

Inject one child from the appended tail after every prefix occurrence.
Source§

fn append_creations<A>( prefix: Creations<CreateChild<A, Self>>, tail: Creations<CreateChild<A, Tail>>, ) -> Creations<CreateChild<A, Self::Output>>
where A: Address,

Preserve and concatenate two ordered creation batches.
Source§

impl<Child, Tail> BirthNodeAppend<Tail> for Child
where Child: Behavior, Tail: NonEmptyBirthNode,

Source§

type Output = ChildChoice<Child, Tail>

Closed child algebra containing the complete prefix followed by the complete appended tail.
Source§

fn append_prefix(self) -> <Child as BirthNodeAppend<Tail>>::Output

Inject one child from the existing prefix without changing its structural occurrence.
Source§

fn append_tail(tail: Tail) -> <Child as BirthNodeAppend<Tail>>::Output

Inject one child from the appended tail after every prefix occurrence.
Source§

fn append_creations<A>( prefix: Creations<CreateChild<A, Self>>, tail: Creations<CreateChild<A, Tail>>, ) -> Creations<CreateChild<A, Self::Output>>
where A: Address,

Preserve and concatenate two ordered creation batches.
Source§

impl<B> BirthProtocols for B
where B: Behavior, <B as Behavior>::Birth: BirthModeProtocols,

Source§

type Protocols = BirthProtocol<<B as Behavior>::Protocol, <<B as Behavior>::Birth as BirthModeProtocols>::Protocols>

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<Node, Shape> ChildOccurrenceProduct<Shape> for Node
where Node: ChildOccurrenceProductAt<ChildHead, Shape>, Shape: ChildOccurrenceShape,

Source§

type Product = <Node as ChildOccurrenceProductAt<ChildHead, Shape>>::Product

Complete shape-owned representation of this closed birth node.
Source§

impl<A, Child, Host> DispatchBirth<A, Host> for Child
where A: Address, Child: CreateSelectedChild<A, ChildHead, Host>,

Source§

fn dispatch_birth( self, id: CreationId, route: <A as Address>::Nonce, kind: CreationKind, host: &mut Host, ) -> impl Future<Output = ItemSettlement<RoutedCreation<A, Child>, <Child as ChildCreationProduct<A, ChildHead>>::Result, CreationRejection, Never>> + Send

Select exactly one concrete child host while preserving creation data in every non-accepted settlement.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.