pub struct ResolvedHydroUnitGroupBounds { /* private fields */ }Expand description
Pre-resolved per-(hydro unit group, stage, block) override table.
stage and block are independently lazy: each stays empty until a row
actually resolves to a cell in that layer, so a study with no group-bound
rows — or only unresolvable ones — leaves both empty regardless of how many
groups hydros declares. is_empty reports exactly this.
§Examples
use cobre_core::resolved::ResolvedHydroUnitGroupBounds;
let empty = ResolvedHydroUnitGroupBounds::empty();
assert!(empty.is_empty());
assert_eq!(
empty.override_at_block(0, 0, 0, 0),
Default::default()
);Implementations§
Source§impl ResolvedHydroUnitGroupBounds
impl ResolvedHydroUnitGroupBounds
Sourcepub fn empty() -> Self
pub fn empty() -> Self
Create an empty override table; every reader returns the column default
and every writer returns None.
Sourcepub fn new(spec: &HydroUnitGroupBoundsCountsSpec<'_>) -> Self
pub fn new(spec: &HydroUnitGroupBoundsCountsSpec<'_>) -> Self
Allocate the group axis for a new override table. stage and block
start empty — stage_override_mut and
block_override_mut grow each to full size
on its own first successful write, so a table with zero applied rows
stays is_empty.
Sourcepub fn stage_override(
&self,
hydro_idx: usize,
group_pos: usize,
stage_idx: usize,
) -> HydroUnitGroupOverride
pub fn stage_override( &self, hydro_idx: usize, group_pos: usize, stage_idx: usize, ) -> HydroUnitGroupOverride
Look up the stage-wide override at (hydro_idx, group_pos, stage_idx).
Returns HydroUnitGroupOverride::default (all None) when the layer
is empty or any index is out of range.
Sourcepub fn stage_override_mut(
&mut self,
hydro_idx: usize,
group_pos: usize,
stage_idx: usize,
) -> Option<&mut HydroUnitGroupOverride>
pub fn stage_override_mut( &mut self, hydro_idx: usize, group_pos: usize, stage_idx: usize, ) -> Option<&mut HydroUnitGroupOverride>
Return a mutable handle to the stage-wide override cell, growing the
layer to full size on its first call, or None when any index is out
of range.
Sourcepub fn block_override(
&self,
hydro_idx: usize,
group_pos: usize,
stage_idx: usize,
block_idx: usize,
) -> HydroUnitGroupOverride
pub fn block_override( &self, hydro_idx: usize, group_pos: usize, stage_idx: usize, block_idx: usize, ) -> HydroUnitGroupOverride
Look up the per-block override at (hydro_idx, group_pos, stage_idx, block_idx).
Returns HydroUnitGroupOverride::default (all None) when the layer
is empty or any index is out of range.
Sourcepub fn block_override_mut(
&mut self,
hydro_idx: usize,
group_pos: usize,
stage_idx: usize,
block_idx: usize,
) -> Option<&mut HydroUnitGroupOverride>
pub fn block_override_mut( &mut self, hydro_idx: usize, group_pos: usize, stage_idx: usize, block_idx: usize, ) -> Option<&mut HydroUnitGroupOverride>
Return a mutable handle to the per-block override cell, growing the
layer to full size on its first call, or None when any index is out
of range.
Sourcepub fn override_at_block(
&self,
hydro_idx: usize,
group_pos: usize,
stage_idx: usize,
block_idx: usize,
) -> HydroUnitGroupOverride
pub fn override_at_block( &self, hydro_idx: usize, group_pos: usize, stage_idx: usize, block_idx: usize, ) -> HydroUnitGroupOverride
Return the resolved override at (hydro_idx, group_pos, stage_idx, block_idx),
applying the bound-precedence law column-independently:
block.<col>.or(stage.<col>). A block row touching only one column
never erases a stage-wide value on another column.
Trait Implementations§
Source§impl Clone for ResolvedHydroUnitGroupBounds
impl Clone for ResolvedHydroUnitGroupBounds
Source§fn clone(&self) -> ResolvedHydroUnitGroupBounds
fn clone(&self) -> ResolvedHydroUnitGroupBounds
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more