1#![warn(missing_docs)]
2mod value;
9mod valueable;
10mod result;
11
12extern crate self as wagon_value; use std::fmt::Display;
15use wagon_macros::ValueOps;
16
17pub use value::{Value, Pow};
18pub use valueable::{Valueable, ToValue};
19pub use result::{ValueError, ValueResult};
20
21#[derive(Debug, Eq, PartialEq, Hash, Clone, ValueOps, PartialOrd)]
38pub struct RecursiveValue(Value<RecursiveValue>);
39
40impl Display for RecursiveValue {
41 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42 self.0.fmt(f)
43 }
44}
45
46impl ToValue<Self> for RecursiveValue {
47 fn to_value(&self) -> &Value<Self> {
48 &self.0
49 }
50}
51
52impl std::ops::Deref for RecursiveValue {
53 type Target = Value<Self>;
54
55 fn deref(&self) -> &Self::Target {
56 &self.0
57 }
58}
59
60impl From<Value<Self>> for RecursiveValue {
61 fn from(value: Value<Self>) -> Self {
62 Self(value)
63 }
64}
65
66impl From<RecursiveValue> for Value<RecursiveValue> {
67 fn from(value: RecursiveValue) -> Self {
68 value.0
69 }
70}