dope_sys/io/socket/route/
plan.rs1use std::mem;
2
3use crate::io::socket::route::{
4 count::Count,
5 selector::{Bootstrap, PrefixPlan, Selector},
6};
7
8#[derive(Clone, Copy, Debug, Eq, PartialEq)]
10pub struct Plan {
11 count: Count,
12 selector: Selector,
13 prefix: Option<PrefixPlan>,
14 bootstrap: Option<Bootstrap>,
15}
16
17impl Plan {
18 pub const fn new(count: Count, selector: Selector) -> Self {
19 Self {
20 count,
21 selector,
22 prefix: None,
23 bootstrap: None,
24 }
25 }
26
27 pub const fn with_prefix(self, prefix: PrefixPlan) -> Self {
28 Self {
29 prefix: Some(prefix),
30 ..self
31 }
32 }
33
34 pub const fn with_bootstrap(self, bootstrap: Bootstrap) -> Self {
35 Self {
36 bootstrap: Some(bootstrap),
37 ..self
38 }
39 }
40
41 pub const fn count(self) -> Count {
42 self.count
43 }
44
45 pub const fn selector(self) -> Selector {
46 self.selector
47 }
48
49 pub const fn prefix(self) -> Option<PrefixPlan> {
50 self.prefix
51 }
52
53 pub const fn bootstrap(self) -> Option<Bootstrap> {
54 self.bootstrap
55 }
56}
57
58const _: () = {
59 assert!(
60 mem::size_of::<Plan>()
61 == mem::size_of::<(Count, Selector, Option<PrefixPlan>, Option<Bootstrap>)>()
62 );
63};