pddl/types/
init_els.rs

1//! Contains the [`InitElements`] type.
2
3use crate::types::InitElement;
4use std::ops::Deref;
5
6/// A wrapper around a list of [`InitElement`] values.
7///
8/// ## Usage
9/// Used by [`Problem`](crate::Problem).
10#[derive(Debug, Clone, PartialEq)]
11pub struct InitElements(Vec<InitElement>);
12
13impl InitElements {
14    pub const fn new(iter: Vec<InitElement>) -> Self {
15        Self(iter)
16    }
17
18    /// Gets the values.
19    pub fn values(&self) -> &[InitElement] {
20        self.0.as_slice()
21    }
22}
23
24impl Deref for InitElements {
25    type Target = [InitElement];
26
27    fn deref(&self) -> &Self::Target {
28        self.0.as_slice()
29    }
30}
31
32impl FromIterator<InitElement> for InitElements {
33    fn from_iter<T: IntoIterator<Item = InitElement>>(iter: T) -> Self {
34        InitElements::new(iter.into_iter().collect())
35    }
36}