use fmt;
use Error;
use Symbol;
/// This is validator trait you should implement for your own symbols
///
/// In reality this trait serves three purposes:
///
/// 1. Validates that atom contains only value you expect it to contain
/// 2. Identifies the type i.e. `type S1 = Symbol<V1>` and
/// `type S2 = Symbol<V2>` are different and incompatible types
/// 3. Allows to override `Display` trait for your own symbol