use ansi_term::Style; #[derive(Clone)] pub struct Segment { name: Option, style: Style, value: String, prefix: BoxedSegment, suffix: BoxedSegment, } impl Segment { /// Creates a new segment with default fields pub fn new(name: T) -> Segment where T: Into, T: Copy, { let default_prefix = Some(Box::new(Segment { name: Some(format!("{} {}", name.into(), "prefix")), style: Style::default(), value: String::from("via "), prefix: None, suffix: None, })); let default_suffix = Some(Box::new(Segment { name: Some(format!("{} {}", name.into(), "suffix")), style: Style::default(), value: String::from(" "), prefix: None, suffix: None, })); Segment { name: Some(name.into()), style: Style::default(), value: String::from(""), prefix: default_prefix, suffix: default_suffix, } } /// Sets the style of the segment /// /// Accepts either `Color` or `Style`. pub fn set_style(&mut self, style: T) -> &mut Segment where T: Into