pub struct Configuration<StateId: IndexLike, MessageId: IndexLike, InvalidId: IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> {
pub state_ids: [StateId; MAX_AGENTS],
pub message_counts: [MessageIndex; MAX_AGENTS],
pub message_ids: [MessageId; MAX_MESSAGES],
pub invalid_id: InvalidId,
}
Expand description
A complete system configuration.
We will have a lot of these, so keeping their size down and avoiding heap memory as much as possible is critical. The maximal sizes were chosen so that the configuration plus its memoized identifier will fit together inside exactly one cache lines, which should make this more cache-friendly when placed inside a hash table.
Fields§
§state_ids: [StateId; MAX_AGENTS]
The state of each agent.
message_counts: [MessageIndex; MAX_AGENTS]
The number of messages sent by each agent.
message_ids: [MessageId; MAX_MESSAGES]
The messages sent by each agent.
invalid_id: InvalidId
The invalid condition, if any.
Trait Implementations§
Source§impl<StateId: Clone + IndexLike, MessageId: Clone + IndexLike, InvalidId: Clone + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Clone for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: Clone + IndexLike, MessageId: Clone + IndexLike, InvalidId: Clone + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Clone for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Source§fn clone(
&self,
) -> Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
fn clone( &self, ) -> Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<StateId: Debug + IndexLike, MessageId: Debug + IndexLike, InvalidId: Debug + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Debug for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: Debug + IndexLike, MessageId: Debug + IndexLike, InvalidId: Debug + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Debug for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Source§impl<StateId: IndexLike, MessageId: IndexLike, InvalidId: IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Default for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: IndexLike, MessageId: IndexLike, InvalidId: IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Default for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Source§impl<StateId: Hash + IndexLike, MessageId: Hash + IndexLike, InvalidId: Hash + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Hash for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: Hash + IndexLike, MessageId: Hash + IndexLike, InvalidId: Hash + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Hash for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Source§impl<StateId: PartialEq + IndexLike, MessageId: PartialEq + IndexLike, InvalidId: PartialEq + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> PartialEq for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: PartialEq + IndexLike, MessageId: PartialEq + IndexLike, InvalidId: PartialEq + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> PartialEq for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Source§fn eq(
&self,
other: &Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>,
) -> bool
fn eq( &self, other: &Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>, ) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.impl<StateId: Copy + IndexLike, MessageId: Copy + IndexLike, InvalidId: Copy + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Copy for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: Eq + IndexLike, MessageId: Eq + IndexLike, InvalidId: Eq + IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Eq for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId: IndexLike, MessageId: IndexLike, InvalidId: IndexLike, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> StructuralPartialEq for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Auto Trait Implementations§
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Freeze for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> RefUnwindSafe for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Send for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Sync for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> Unpin for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
impl<StateId, MessageId, InvalidId, const MAX_AGENTS: usize, const MAX_MESSAGES: usize> UnwindSafe for Configuration<StateId, MessageId, InvalidId, MAX_AGENTS, MAX_MESSAGES>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more