#[derive(Debug)] pub struct Message { pub text: String, pub kind: MessageKind, } impl Message { pub fn new() -> Self { Self { text: String::new(), kind: MessageKind::Info, } } pub fn kind(mut self, kind: MessageKind) -> Self { self.kind = kind; self } pub fn text>(mut self, text: S) -> Self { self.text = text.as_ref().into(); self } } #[derive(Debug, Copy, Clone)] pub enum MessageKind { Error, Info, Hint, LispResult, } impl From for Message where T: AsRef, { fn from(item: T) -> Self { return Message { text: item.as_ref().into(), kind: MessageKind::Info, }; } }