use std::fmt;
use serde::{Deserialize, Serialize};
use crate::common::graphviz_attrs::Margin;
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct ClusterMargin(pub Margin);
impl ClusterMargin {
pub fn new() -> Self {
Self::default()
}
pub fn into_inner(self) -> Margin {
self.0
}
}
impl Default for ClusterMargin {
fn default() -> Self {
Self(Margin::Same(8.0))
}
}
impl From<Margin> for ClusterMargin {
fn from(margin: Margin) -> Self {
Self(margin)
}
}
impl std::ops::DerefMut for ClusterMargin {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
impl std::ops::Deref for ClusterMargin {
type Target = Margin;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl fmt::Display for ClusterMargin {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
}
}