pub struct RestrictedMiddleUniform { /* private fields */ }
Expand description
A pattern in which the destinations are randomly sampled from the destinations for which there are some middle router satisfying some criteria. Note this is only a pattern, the actual packet route does not have to go through such middle router. It has the same implicit concentration scaling as UniformDistance, allowing building a pattern over a multiple of the number of switches.
Example configuration:
ⓘ
RestrictedMiddleUniform{
/// An optional integer value to allow only middle routers whose index is greater or equal to it.
minimum_index: 100,
/// An optional integer value to allow only middle routers whose index is lower or equal to it.
// maximum_index: 100,
/// Optionally, give a vector with the possible values of the distance from the source to the middle.
distances_to_source: [1],
/// Optionally, give a vector with the possible values of the distance from the middle to the destination.
distances_to_destination: [1],
/// Optionally, a vector with distances from source to destination, ignoring middle.
distances_source_to_destination: [2],
/// Optionally, set a pattern for those sources with no legal destination.
else: Uniform,
}
Trait Implementations§
Source§impl Debug for RestrictedMiddleUniform
impl Debug for RestrictedMiddleUniform
Source§impl Pattern for RestrictedMiddleUniform
impl Pattern for RestrictedMiddleUniform
Source§fn initialize(
&mut self,
source_size: usize,
target_size: usize,
topology: &dyn Topology,
rng: &mut StdRng,
)
fn initialize( &mut self, source_size: usize, target_size: usize, topology: &dyn Topology, rng: &mut StdRng, )
Fix the input and output size, providing the topology and random number generator.
Careful with using topology in sub-patterns. For example, it may be misleading to use the dragonfly topology when
building a pattern among groups or a pattern among the routers of a single group.
Even just a pattern of routers instead of a pattern of servers can lead to mistakes.
Read the documentation of the traffic or meta-pattern using the pattern to know what its their input and output.
Source§impl Quantifiable for RestrictedMiddleUniform
impl Quantifiable for RestrictedMiddleUniform
Source§fn total_memory(&self) -> usize
fn total_memory(&self) -> usize
Get the total memory currently being employed by the implementing type. Both stack and heap.
Source§fn print_memory_breakdown(&self)
fn print_memory_breakdown(&self)
Prints by stdout how much memory is used per component.
Source§fn forecast_total_memory(&self) -> usize
fn forecast_total_memory(&self) -> usize
Get an estimation on how much memory the type could reach during the simulation.
Auto Trait Implementations§
impl Freeze for RestrictedMiddleUniform
impl !RefUnwindSafe for RestrictedMiddleUniform
impl !Send for RestrictedMiddleUniform
impl !Sync for RestrictedMiddleUniform
impl Unpin for RestrictedMiddleUniform
impl !UnwindSafe for RestrictedMiddleUniform
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more