pub trait ProblemGeneric: ProblemGenericPrivate {
Show 17 methods
// Required methods
fn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey);
fn remove_item(
&mut self,
layout_index: LayoutIndex,
pik: PItemKey,
commit_instantly: bool,
) -> PlacingOption;
fn create_solution(&mut self, old_solution: Option<&Solution>) -> Solution;
fn restore_to_solution(&mut self, solution: &Solution);
fn layouts(&self) -> &[Layout];
fn layouts_mut(&mut self) -> &mut [Layout];
fn template_layouts(&self) -> &[Layout];
fn missing_item_qtys(&self) -> &[isize];
fn bin_qtys(&self) -> &[usize];
fn instance(&self) -> &dyn InstanceGeneric;
// Provided methods
fn placed_item_qtys(&self) -> impl Iterator<Item = usize> { ... }
fn usage(&mut self) -> fsize { ... }
fn used_bin_cost(&self) -> u64 { ... }
fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex> { ... }
fn template_layout_indices_with_stock(
&self,
) -> impl Iterator<Item = LayoutIndex> { ... }
fn get_layout(&self, index: impl Borrow<LayoutIndex>) -> &Layout { ... }
fn flush_changes(&mut self) { ... }
}
Expand description
Trait for public shared functionality of all problem variants.
Required Methods§
Sourcefn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey)
fn place_item(&mut self, p_opt: PlacingOption) -> (LayoutIndex, PItemKey)
Places an item into the problem instance according to the given PlacingOption
.
Returns the index of the layout where the item was placed.
Sourcefn remove_item(
&mut self,
layout_index: LayoutIndex,
pik: PItemKey,
commit_instantly: bool,
) -> PlacingOption
fn remove_item( &mut self, layout_index: LayoutIndex, pik: PItemKey, commit_instantly: bool, ) -> PlacingOption
Removes a placed item (with its unique key) from a specific Layout
.
Returns a PlacingOption
that can be used to place the item back in the same configuration.
For more information about commit_instantly
, see crate::collision_detection::cd_engine::CDEngine::deregister_hazard
.
Sourcefn create_solution(&mut self, old_solution: Option<&Solution>) -> Solution
fn create_solution(&mut self, old_solution: Option<&Solution>) -> Solution
Saves the current state of the problem as a Solution
.
Sourcefn restore_to_solution(&mut self, solution: &Solution)
fn restore_to_solution(&mut self, solution: &Solution)
Restores the state of the problem to a previous Solution
.
fn layouts(&self) -> &[Layout]
fn layouts_mut(&mut self) -> &mut [Layout]
Sourcefn template_layouts(&self) -> &[Layout]
fn template_layouts(&self) -> &[Layout]
Template layouts are empty and immutable. For every unique bin in the problem instance, there is a template layout. When an item is placed in a template layout, it is cloned into a real layout.
Sourcefn missing_item_qtys(&self) -> &[isize]
fn missing_item_qtys(&self) -> &[isize]
The quantity of each item that is requested but currently missing in the problem instance, indexed by item id.
fn bin_qtys(&self) -> &[usize]
fn instance(&self) -> &dyn InstanceGeneric
Provided Methods§
Sourcefn placed_item_qtys(&self) -> impl Iterator<Item = usize>
fn placed_item_qtys(&self) -> impl Iterator<Item = usize>
The quantity of each item that is currently placed in the problem instance, indexed by item id.
fn usage(&mut self) -> fsize
fn used_bin_cost(&self) -> u64
Sourcefn layout_indices(&self) -> impl Iterator<Item = LayoutIndex>
fn layout_indices(&self) -> impl Iterator<Item = LayoutIndex>
Returns the LayoutIndex
of all layouts.
Sourcefn template_layout_indices_with_stock(
&self,
) -> impl Iterator<Item = LayoutIndex>
fn template_layout_indices_with_stock( &self, ) -> impl Iterator<Item = LayoutIndex>
Returns the LayoutIndex
of all template layouts that have remaining stock.
fn get_layout(&self, index: impl Borrow<LayoutIndex>) -> &Layout
Sourcefn flush_changes(&mut self)
fn flush_changes(&mut self)
Makes sure that the all collision detection engines are completely updated with the changes made to the layouts.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.