#![warn(missing_docs)]
mod value;
mod valueable;
mod result;
extern crate self as wagon_value;
use std::fmt::Display;
use wagon_macros::ValueOps;
pub use value::{Value, Pow};
pub use valueable::{Valueable, ToValue};
pub use result::{ValueError, ValueResult};
#[derive(Debug, Eq, PartialEq, Hash, Clone, ValueOps, PartialOrd)]
pub struct RecursiveValue(Value<RecursiveValue>);
impl Display for RecursiveValue {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}
impl ToValue<Self> for RecursiveValue {
fn to_value(&self) -> &Value<Self> {
&self.0
}
}
impl std::ops::Deref for RecursiveValue {
type Target = Value<Self>;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl From<Value<Self>> for RecursiveValue {
fn from(value: Value<Self>) -> Self {
Self(value)
}
}
impl From<RecursiveValue> for Value<RecursiveValue> {
fn from(value: RecursiveValue) -> Self {
value.0
}
}