use crate::{messaging::AsMsg, utils::OneOrVec}; use serde::{Deserialize, Serialize}; use std::fmt::{self, Display, Formatter}; use std::ops::{Deref, DerefMut}; #[derive(Serialize, Deserialize, Clone, Default)] pub struct VecDisplay(pub Vec); impl VecDisplay { pub fn new(inner: impl OneOrVec) -> Self { VecDisplay(inner.into_vec()) } pub fn into_builtin_vec(self) -> Vec { self.0 } } impl Deref for VecDisplay { type Target = Vec; fn deref(&self) -> &Self::Target { &self.0 } } impl DerefMut for VecDisplay { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } } impl Display for VecDisplay { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { for (i, itm) in self.0.iter().enumerate() { writeln!(f, "### {}:\n{}\n", i, itm)?; } Ok(()) } }