pddl/types/
predicate_definitions.rs1use crate::types::AtomicFormulaSkeleton;
4use std::ops::Deref;
5
6#[derive(Debug, Default, Clone, Eq, PartialEq)]
11pub struct PredicateDefinitions(Vec<AtomicFormulaSkeleton>);
12
13impl PredicateDefinitions {
14 pub fn new<I: IntoIterator<Item = AtomicFormulaSkeleton>>(predicates: I) -> Self {
15 Self::from(predicates.into_iter().collect())
16 }
17
18 pub const fn from(predicates: Vec<AtomicFormulaSkeleton>) -> Self {
19 Self(predicates)
20 }
21
22 pub fn values(&self) -> &[AtomicFormulaSkeleton] {
24 self.0.as_slice()
25 }
26}
27
28impl Deref for PredicateDefinitions {
29 type Target = [AtomicFormulaSkeleton];
30
31 fn deref(&self) -> &Self::Target {
32 self.0.as_slice()
33 }
34}
35
36impl From<Vec<AtomicFormulaSkeleton>> for PredicateDefinitions {
37 fn from(value: Vec<AtomicFormulaSkeleton>) -> Self {
38 PredicateDefinitions::new(value)
39 }
40}
41
42impl FromIterator<AtomicFormulaSkeleton> for PredicateDefinitions {
43 fn from_iter<T: IntoIterator<Item = AtomicFormulaSkeleton>>(iter: T) -> Self {
44 PredicateDefinitions::new(iter)
45 }
46}