Trait valuable::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 AtomicU64

source§

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

source§

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

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<K: Valuable, V: Valuable> Valuable for BTreeMap<K, V>

source§

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

source§

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

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<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 Valuable for PathBuf

source§

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

source§

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

source§

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

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<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<T: ?Sized + Valuable> Valuable for &mut T

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<T: ?Sized + Valuable> Valuable for Box<T>

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<T0> Valuable for (T0,)where T0: Valuable,

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<T: ?Sized + Valuable> Valuable for &T

source§

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

source§

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

source§

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

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<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 Valuable for AtomicU16

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: 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 &[T]

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 Valuable for AtomicI32

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 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 dyn Error + 'static

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<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 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 NonZeroUsize

source§

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

source§

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

source§

impl Valuable for &Path

source§

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

source§

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

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<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 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<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 Valuable for NonZeroU128

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 AtomicI16

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 Valuable for AtomicBool

source§

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

source§

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

source§

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

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 Valuable for AtomicU32

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

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 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 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<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> 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 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 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 NonZeroU16

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 AtomicI64

source§

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

source§

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

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 String

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 NonZeroU64

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<T: Valuable> Valuable for Box<[T]>

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<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<K: Valuable, V: Valuable> Valuable for HashMap<K, V>

source§

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

source§

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

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<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<T: ?Sized + Valuable> Valuable for Arc<T>

source§

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

source§

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

source§

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

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 NonZeroI128

source§

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

source§

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

source§

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

source§

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

source§

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

source§

impl Valuable for ()

source§

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

source§

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

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 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 NonZeroIsize

source§

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

source§

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

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

source§

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

source§

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

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<T: Valuable> Valuable for Arc<[T]>

source§

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

source§

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

Implementors§

source§

impl Valuable for Value<'_>