jagua_rs/entities/
instance.rs

1use crate::entities::Container;
2use crate::entities::Item;
3use std::any::Any;
4
5/// The static (unmodifiable) representation of a problem instance.
6/// This trait defines shared functionality between any instance variant.
7pub trait Instance: Any {
8    /// All items
9    fn items(&self) -> impl Iterator<Item = &Item>;
10
11    /// All containers
12    fn containers(&self) -> impl Iterator<Item = &Container>;
13
14    /// A specific item
15    fn item(&self, id: usize) -> &Item;
16
17    /// A specific container
18    fn container(&self, id: usize) -> &Container;
19}