From a0e4172602f0b6a666bca7d8568a4f9a181d5438 Mon Sep 17 00:00:00 2001 From: Matan Kushner Date: Fri, 12 Apr 2019 19:11:40 -0400 Subject: Use copy to return segment --- src/segment.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/segment.rs') diff --git a/src/segment.rs b/src/segment.rs index 9fe50e904..cca71cdd1 100644 --- a/src/segment.rs +++ b/src/segment.rs @@ -1,5 +1,6 @@ use ansi_term::Style; +#[derive(Clone)] pub struct Segment { name: Option, style: Style, @@ -12,6 +13,7 @@ impl Segment { pub fn new(name: T) -> Segment where T: Into, + T: Copy, { let default_prefix = Some(Box::new(Segment { name: Some(format!("{} {}", name.into(), "prefix")), @@ -46,8 +48,11 @@ impl Segment { self } - pub fn set_value<'a>(&'a mut self, value: String) -> &'a mut Segment { - self.value = value; + pub fn set_value<'a, T>(&'a mut self, value: T) -> &'a mut Segment + where + T: Into, + { + self.value = value.into(); self } @@ -61,6 +66,10 @@ impl Segment { self } + /// Create a string with the formatted contents of a segment + /// + /// Will recursively also format the prefix and suffix of the segment being + /// stringified. pub fn output<'a>(&'a self) -> String { let Segment { name: _name, -- cgit v1.2.3