dope_core/io/socket/
backlog.rs1use std::{mem, num};
2
3#[derive(Clone, Copy, PartialEq, Eq)]
5#[repr(transparent)]
6pub struct Backlog(num::NonZero<i32>);
7
8impl Backlog {
9 pub const fn fixed<const VALUE: i32>() -> Self {
11 const { assert!(VALUE > 0) };
12 let value = match num::NonZero::<i32>::new(VALUE) {
13 Some(value) => value,
14 None => num::NonZero::<i32>::MIN,
15 };
16 Self(value)
17 }
18
19 #[must_use]
20 pub(crate) const fn get(self) -> i32 {
21 self.0.get()
22 }
23}
24
25impl From<Backlog> for num::NonZero<i32> {
26 fn from(depth: Backlog) -> Self {
27 depth.0
28 }
29}
30
31const _: () = {
32 assert!(mem::size_of::<Backlog>() == mem::size_of::<i32>());
33 assert!(mem::size_of::<Option<Backlog>>() == mem::size_of::<i32>());
34};