#[derive(Clone, Debug, Default, Eq, Ord, PartialOrd, PartialEq, Hash)]
pub struct ChannelSizes {
pub(crate) payload: usize,
pub(crate) message_queue: usize,
pub(crate) callbacks: usize,
pub(crate) responses: usize,
}
impl ChannelSizes {
#[must_use]
pub const fn new(
payload: usize,
message_queue: usize,
callbacks: usize,
responses: usize,
) -> Self {
Self {
payload,
message_queue,
callbacks,
responses,
}
}
#[must_use]
pub const fn with_payload(&mut self, payload: usize) -> &mut Self {
self.payload = payload;
self
}
#[must_use]
pub const fn with_message_queue(&mut self, message_queue: usize) -> &mut Self {
self.message_queue = message_queue;
self
}
#[must_use]
pub const fn with_callbacks(&mut self, callbacks: usize) -> &mut Self {
self.callbacks = callbacks;
self
}
#[must_use]
pub const fn with_responses(&mut self, responses: usize) -> &mut Self {
self.responses = responses;
self
}
}
impl From<usize> for ChannelSizes {
fn from(value: usize) -> Self {
Self::new(value, value, value, value)
}
}