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

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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: 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: &[Self], visit: &mut dyn Visit)
where Self: Sized,

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 NonZeroI8

Source§

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

Source§

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

Source§

impl Valuable for NonZeroI16

Source§

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

Source§

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

Source§

impl Valuable for NonZeroI32

Source§

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

Source§

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

Source§

impl Valuable for NonZeroI64

Source§

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

Source§

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

Source§

impl Valuable for NonZeroI128

Source§

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

Source§

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

Source§

impl Valuable for NonZeroIsize

Source§

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

Source§

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

Source§

impl Valuable for NonZeroU8

Source§

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

Source§

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

Source§

impl Valuable for NonZeroU16

Source§

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

Source§

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

Source§

impl Valuable for NonZeroU32

Source§

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

Source§

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

Source§

impl Valuable for NonZeroU64

Source§

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

Source§

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

Source§

impl Valuable for NonZeroU128

Source§

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

Source§

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

Source§

impl Valuable for NonZeroUsize

Source§

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

Source§

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

Source§

impl Valuable for dyn Error + 'static

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

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, 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: Valuable + Eq + Hash, H: BuildHasher> Valuable for HashSet<T, H>

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

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> Valuable for Vec<T>

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

Available on crate feature alloc only.
Source§

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

Source§

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

Source§

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

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)

Implementors§

Source§

impl Valuable for Value<'_>