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}