From 8b5d5a9c57a7f87b26bb741067babb7a0b765ae7 Mon Sep 17 00:00:00 2001
From: Jason Travis Smith <Myrddin@CyberMagesLLC.com>
Date: Thu, 11 May 2017 16:49:46 -0400
Subject: [PATCH] Adjusting the Display implementation.

Display will automatically implement the to_string functionality, so the
explicit implementation was removed.
---
 src/c_enum.rs  |  6 ----
 src/c_flags.rs | 81 ++++++++++++++++++++++----------------------------
 2 files changed, 36 insertions(+), 51 deletions(-)

diff --git a/src/c_enum.rs b/src/c_enum.rs
index 43d3cb7..b1cef18 100644
--- a/src/c_enum.rs
+++ b/src/c_enum.rs
@@ -83,12 +83,6 @@ macro_rules! c_enum
                $($name::$variant => {stringify!($variant)})*
             }
          }
-
-         /// Get a String representation of this variant.
-         pub fn to_string(&self) -> String
-         {
-            String::from(self.to_str())
-         }
       }
 
       impl ::std::fmt::Debug for $name
diff --git a/src/c_flags.rs b/src/c_flags.rs
index 38447b6..e36ed20 100644
--- a/src/c_flags.rs
+++ b/src/c_flags.rs
@@ -82,49 +82,6 @@ macro_rules! c_flags
             self.bits
          }
 
-         /// Turn the flag into a String representation of its self.
-         #[warn(unused_assignments)]
-         pub fn to_string(&self) -> String
-         {
-            let mut first: bool;
-            let mut string: String;
-
-            // Push the left bracket onto the string.
-            string = String::new();
-            string.push_str("{");
-
-            // Handle checking each flag to see if it
-            // is part of this flag.
-            first = true;
-            $(
-               if self.intersects($flag) == true
-               {
-                  // If this is not the first flag,
-                  // then add an OR symbol.
-                  if first == false
-                  {
-                     string.push_str(" | ");
-                  }
-
-                  // Push the flags name onto the string.
-                  string.push_str(stringify!($flag));
-                  first = false;
-               }
-            )+
-
-            // No flags were set.
-            if first == true
-            {
-               // Put a space in the string.
-               string.push_str(" ");
-            }
-
-            // Push the right bracket onto the string
-            // and return it.
-            string.push_str("}");
-            string
-         }
-
          /// Returns `true` if there are flags common to
          /// both `self` and `other`; Otherwise, `false` is returned.
          pub fn intersects(&self, other: $name) -> bool
@@ -217,15 +174,49 @@ macro_rules! c_flags
       {
          fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result
          {
-            write!(f, "{}", self.to_string())
+            ::std::fmt::Display::fmt(self, f)
          }
       }
 
       impl ::std::fmt::Display for $name
       {
+         #[warn(unused_assignments)]
          fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result
          {
-            write!(f, "{}", self.to_string())
+            let mut first: bool;
+
+            // Push the left bracket onto the string.
+            try!(write!(f, "{}", '{'));
+
+            // Handle checking each flag to see if it
+            // is part of this flag.
+            first = true;
+            $(
+               if self.intersects($flag) == true
+               {
+                  // If this is not the first flag,
+                  // then add an OR symbol.
+                  if first == false
+                  {
+                     try!(write!(f, " | "));
+                  }
+
+                  // Push the flags name onto the string.
+                  try!(write!(f, "{}", stringify!($flag)));
+                  first = false;
+               }
+            )+
+
+            // No flags were set.
+            if first == true
+            {
+               // Put a space in the string.
+               try!(write!(f, " "));
+            }
+
+            // Push the right bracket onto the string
+            // and return it.
+            write!(f, "{}", '}')
          }
       }
    }