From 9561e1bf91ac5e29a43a7c9f98a4f1247cfe7682 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 23 Dec 2016 17:45:37 -0700 Subject: [PATCH] Add Display trait to Token and Kind --- src/lexer.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lexer.rs b/src/lexer.rs index 6f45041..984c62d 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -1,5 +1,7 @@ //! # Lexer +use std::fmt; + use characters; use characters::RelativeIndexable; @@ -9,11 +11,28 @@ pub enum Kind { Identifier, } +impl fmt::Display for Kind { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let s = match *self { + Kind::LeftParen => "LeftParen", + Kind::RightParen => "RightParen", + Kind::Identifier => "Identifier", + }; + write!(f, "{}", s) + } +} + pub struct Token { kind: Kind, value: String, } +impl fmt::Display for Token { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "({}, \"{}\")", self.kind, self.value) + } +} + enum State { Initial, Identifier,