mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-24 00:00:11 +02:00
This patch adds a `DelayQueue` to tokio_timer. The `DelayQueue` allows inserting elements as well as specifying a time at which the element should be returned to the user. This allows handling more complex timeout situations.
27 lines
774 B
Rust
27 lines
774 B
Rust
use std::borrow::Borrow;
|
|
|
|
/// Abstracts the stack operations needed to track timeouts.
|
|
pub(crate) trait Stack: Default {
|
|
/// Type of the item stored in the stack
|
|
type Owned: Borrow<Self::Borrowed>;
|
|
|
|
/// Borrowed item
|
|
type Borrowed;
|
|
|
|
/// Item storage, this allows a slab to be used instead of just the heap
|
|
type Store;
|
|
|
|
/// Returns `true` if the stack is empty
|
|
fn is_empty(&self) -> bool;
|
|
|
|
/// Push an item onto the stack
|
|
fn push(&mut self, item: Self::Owned, store: &mut Self::Store);
|
|
|
|
/// Pop an item from the stack
|
|
fn pop(&mut self, store: &mut Self::Store) -> Option<Self::Owned>;
|
|
|
|
fn remove(&mut self, item: &Self::Borrowed, store: &mut Self::Store);
|
|
|
|
fn when(item: &Self::Borrowed, store: &Self::Store) -> u64;
|
|
}
|