1use crate::internal::commas;
2use crate::Assign;
3use std::fmt;
4
5#[derive(Debug, Clone)]
10pub struct Phi {
11 dependencies: Vec<Assign>,
13}
14
15impl Phi {
16 pub(crate) fn new() -> Self {
18 Self {
19 dependencies: Vec::new(),
20 }
21 }
22
23 pub(crate) fn extend<I>(&mut self, iter: I)
25 where
26 I: IntoIterator<Item = Assign>,
27 {
28 self.dependencies.extend(iter);
29 }
30}
31
32impl fmt::Display for Phi {
33 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34 if self.dependencies.is_empty() {
35 write!(f, "φ(?)")?;
36 } else {
37 write!(f, "φ({})", commas(&self.dependencies))?;
38 }
39
40 Ok(())
41 }
42}