sark_http/request/seq.rs
1use std::mem;
2
3use dope_core::driver::schedule::sequence;
4
5use crate::request::Id;
6
7/// Single-threaded request identity sequence for one bound application.
8#[repr(transparent)]
9pub struct Seq<'d>(sequence::Block<'d>);
10
11impl<'d> Seq<'d> {
12 pub fn new(sequence: sequence::Block<'d>) -> Self {
13 Self(sequence)
14 }
15
16 pub fn try_next(&self) -> Result<Id<'d>, sequence::Exhausted> {
17 Ok(Id::new(self.0.try_next()?))
18 }
19}
20
21const _: () = assert!(mem::size_of::<Seq<'static>>() == 2 * mem::size_of::<usize>());