Valuable

Trait Valuable 

Source
pub trait Valuable {
    // Required methods
    fn as_value(&self) -> Value<'_>;
    fn visit(&self, visit: &mut dyn Visit);

    // Provided method
    fn visit_slice(slice: &[Self], visit: &mut dyn Visit)
       where Self: Sized { ... }
}
Expand description

A type that can be converted to a Value.

Valuable types are inspected by defining a Visit implementation and using it when calling Valuable::visit. See Visit documentation for more details.

The Valuable procedural macro makes implementing Valuable easy. Users can add add #[derive(Valuable)] to their types.

Valuable provides implementations for many Rust primitives and standard library types.

Types implementing Valuable may also implement one of the more specific traits: Structable, Enumerable, Listable, and Mappable. These traits should be implemented when the type is a nested container of other Valuable types.

Required Methods§

Source

fn as_value(&self) -> Value<'_>

Converts self into a Value instance.

§Examples
use valuable::Valuable;

let _ = "hello".as_value();
Source

fn visit(&self, visit: &mut dyn Visit)

Calls the relevant method on Visit to extract data from self.

This method is used to extract type-specific data from the value and is intended to be an implementation detail. For example, Vec implements visit by calling visit_value() on each of its elements. Structs implement visit by calling visit_named_fields() or visit_unnamed_fields().

Usually, users will call the visit function instead.

Provided Methods§

Source

fn visit_slice(slice: &[Self], visit: &mut dyn Visit)
where Self: Sized,

Calls Visit::visit_primitive_slice() with self.

This method is an implementation detail used to optimize visiting primitive slices.

Trait Implementations§

Source§

impl Debug for dyn Valuable + '_

Source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Implementations on Foreign Types§

Source§

impl Valuable for &str

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[&str], visit: &mut dyn Visit)
where &str: Sized,

Source§

impl Valuable for &Path

Available on crate feature std only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for bool

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[bool], visit: &mut dyn Visit)
where bool: Sized,

Source§

impl Valuable for char

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[char], visit: &mut dyn Visit)
where char: Sized,

Source§

impl Valuable for f32

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[f32], visit: &mut dyn Visit)
where f32: Sized,

Source§

impl Valuable for f64

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[f64], visit: &mut dyn Visit)
where f64: Sized,

Source§

impl Valuable for i8

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[i8], visit: &mut dyn Visit)
where i8: Sized,

Source§

impl Valuable for i16

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[i16], visit: &mut dyn Visit)
where i16: Sized,

Source§

impl Valuable for i32

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[i32], visit: &mut dyn Visit)
where i32: Sized,

Source§

impl Valuable for i64

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[i64], visit: &mut dyn Visit)
where i64: Sized,

Source§

impl Valuable for i128

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[i128], visit: &mut dyn Visit)
where i128: Sized,

Source§

impl Valuable for isize

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[isize], visit: &mut dyn Visit)
where isize: Sized,

Source§

impl Valuable for u8

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[u8], visit: &mut dyn Visit)
where u8: Sized,

Source§

impl Valuable for u16

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[u16], visit: &mut dyn Visit)
where u16: Sized,

Source§

impl Valuable for u32

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[u32], visit: &mut dyn Visit)
where u32: Sized,

Source§

impl Valuable for u64

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[u64], visit: &mut dyn Visit)
where u64: Sized,

Source§

impl Valuable for u128

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[u128], visit: &mut dyn Visit)
where u128: Sized,

Source§

impl Valuable for ()

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for usize

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[usize], visit: &mut dyn Visit)
where usize: Sized,

Source§

impl Valuable for String

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

fn visit_slice(slice: &[String], visit: &mut dyn Visit)
where String: Sized,

Source§

impl Valuable for NonZero<i8>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<i16>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<i32>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<i64>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<i128>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<isize>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<u8>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<u16>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<u32>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<u64>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<u128>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for NonZero<usize>

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicBool

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicI8

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicI16

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicI32

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicI64

Available on non-valuable_no_atomic_64 only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicIsize

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicU8

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicU16

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicU32

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicU64

Available on non-valuable_no_atomic_64 only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for AtomicUsize

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for PathBuf

Available on crate feature std only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl Valuable for dyn Error

Available on crate feature std only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<K, V> Valuable for BTreeMap<K, V>
where K: Valuable, V: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<K, V, S> Valuable for HashMap<K, V, S>
where K: Valuable, V: Valuable,

Available on crate feature std only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0> Valuable for (T0,)
where T0: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1> Valuable for (T0, T1)
where T0: Valuable, T1: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2> Valuable for (T0, T1, T2)
where T0: Valuable, T1: Valuable, T2: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3> Valuable for (T0, T1, T2, T3)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4> Valuable for (T0, T1, T2, T3, T4)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5> Valuable for (T0, T1, T2, T3, T4, T5)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6> Valuable for (T0, T1, T2, T3, T4, T5, T6)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable, T11: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable, T11: Valuable, T12: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable, T11: Valuable, T12: Valuable, T13: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable, T11: Valuable, T12: Valuable, T13: Valuable, T14: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Valuable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
where T0: Valuable, T1: Valuable, T2: Valuable, T3: Valuable, T4: Valuable, T5: Valuable, T6: Valuable, T7: Valuable, T8: Valuable, T9: Valuable, T10: Valuable, T11: Valuable, T12: Valuable, T13: Valuable, T14: Valuable, T15: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for &[T]
where T: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Option<T>
where T: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for &T
where T: Valuable + ?Sized,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for &mut T
where T: Valuable + ?Sized,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Box<[T]>
where T: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Box<T>
where T: Valuable + ?Sized,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for BinaryHeap<T>
where T: Valuable + Ord,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for BTreeSet<T>
where T: Valuable + Ord,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for LinkedList<T>
where T: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for VecDeque<T>
where T: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Rc<[T]>
where T: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Rc<T>
where T: Valuable + ?Sized,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Arc<[T]>
where T: Valuable,

Available on non-valuable_no_atomic_cas and crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Arc<T>
where T: Valuable + ?Sized,

Available on non-valuable_no_atomic_cas and crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Vec<T>
where T: Valuable,

Available on crate feature alloc only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T> Valuable for Wrapping<T>
where T: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T, E> Valuable for Result<T, E>
where T: Valuable, E: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visitor: &mut dyn Visit)

Source§

impl<T, H> Valuable for HashSet<T, H>
where T: Valuable + Eq + Hash, H: BuildHasher,

Available on crate feature std only.
Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Source§

impl<T, const N: usize> Valuable for [T; N]
where T: Valuable,

Source§

fn as_value(&self) -> Value<'_>

Source§

fn visit(&self, visit: &mut dyn Visit)

Implementors§

Source§

impl Valuable for Value<'_>