From 01af45ab3f5aea7b421ee5fa1b6ab64c89918bf9 Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Mon, 17 Apr 2017 21:09:45 -0700 Subject: [PATCH] Pre: define Display for ValueType. --- core/src/lib.rs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/core/src/lib.rs b/core/src/lib.rs index a6390a8d..67b0aa63 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -17,6 +17,7 @@ extern crate edn; pub mod values; use std::collections::BTreeMap; +use std::fmt; use std::rc::Rc; use self::ordered_float::OrderedFloat; use self::edn::NamespacedKeyword; @@ -44,19 +45,33 @@ pub enum ValueType { } impl ValueType { - pub fn to_edn_value(&self) -> edn::Value { + pub fn to_edn_value(self) -> edn::Value { match self { - &ValueType::Ref => values::DB_TYPE_REF.clone(), - &ValueType::Boolean => values::DB_TYPE_BOOLEAN.clone(), - &ValueType::Instant => values::DB_TYPE_INSTANT.clone(), - &ValueType::Long => values::DB_TYPE_LONG.clone(), - &ValueType::Double => values::DB_TYPE_DOUBLE.clone(), - &ValueType::String => values::DB_TYPE_STRING.clone(), - &ValueType::Keyword => values::DB_TYPE_KEYWORD.clone(), + ValueType::Ref => values::DB_TYPE_REF.clone(), + ValueType::Boolean => values::DB_TYPE_BOOLEAN.clone(), + ValueType::Instant => values::DB_TYPE_INSTANT.clone(), + ValueType::Long => values::DB_TYPE_LONG.clone(), + ValueType::Double => values::DB_TYPE_DOUBLE.clone(), + ValueType::String => values::DB_TYPE_STRING.clone(), + ValueType::Keyword => values::DB_TYPE_KEYWORD.clone(), } } } +impl fmt::Display for ValueType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}", match *self { + ValueType::Ref => "db.type/ref", + ValueType::Boolean => "db.type/boolean", + ValueType::Instant => "db.type/instant", + ValueType::Long => "db.type/long", + ValueType::Double => "db.type/double", + ValueType::String => "db.type/string", + ValueType::Keyword => "db.type/keyword", + }) + } +} + /// Represents a Mentat value in a particular value set. // TODO: expand to include :db.type/{instant,url,uuid}. // TODO: BigInt?