Trait savefile::Introspect

source ·
pub trait Introspect {
    // Required methods
    fn introspect_value(&self) -> String;
    fn introspect_child<'a>(
        &'a self,
        index: usize
    ) -> Option<Box<dyn IntrospectItem<'a> + 'a>>;

    // Provided method
    fn introspect_len(&self) -> usize { ... }
}
Expand description

Gives the ability to look into an object, inspecting any children (fields).

Required Methods§

source

fn introspect_value(&self) -> String

Returns the value of the object, excluding children, as a string. Exactly what the value returned here is depends on the type. For some types, like a plain array, there isn’t much of a value, the entire information of object resides in the children. For other cases, like a department in an organisation, it might make sense to have the value be the name, and have all the other properties as children.

source

fn introspect_child<'a>( &'a self, index: usize ) -> Option<Box<dyn IntrospectItem<'a> + 'a>>

Returns an the name and &dyn Introspect for the child with the given index, or if no child with that index exists, None. All the children should be indexed consecutively starting at 0 with no gaps, all though there isn’t really anything stopping the user of the trait to have any arbitrary index strategy, consecutive numbering 0, 1, 2, … etc is strongly encouraged.

Provided Methods§

source

fn introspect_len(&self) -> usize

Returns the total number of children. The default implementation calculates this by simply calling introspect_child with higher and higher indexes until it returns None. It gives up if the count reaches 10000. If your type can be bigger and you want to be able to introspect it, override this method.

Implementations on Foreign Types§

source§

impl Introspect for bool

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for char

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for f32

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for f64

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for i8

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for i16

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for i32

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for i64

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for i128

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for isize

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for u8

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for u16

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for u32

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for u64

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for u128

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for ()

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for usize

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for BitSet

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for BitVec

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for String

source§

impl Introspect for Arc<str>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'a>( &'a self, _index: usize ) -> Option<Box<dyn IntrospectItem<'a>>>

source§

fn introspect_len(&self) -> usize

source§

impl Introspect for AtomicBool

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicI8

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicI16

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicI32

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicI64

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicIsize

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicU8

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicU16

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicU32

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicU64

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for AtomicUsize

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl Introspect for PathBuf

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'a>( &'a self, _index: usize ) -> Option<Box<dyn IntrospectItem<'a>>>

source§

impl<'a, T: 'a + Introspect + ToOwned + ?Sized> Introspect for Cow<'a, T>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'b>( &'b self, index: usize ) -> Option<Box<dyn IntrospectItem<'b> + 'b>>

source§

fn introspect_len(&self) -> usize

source§

impl<'a, T: Introspect> Introspect for Ref<'a, T>

source§

impl<K, V: Introspect, S: BuildHasher> Introspect for IndexMap<K, V, S>
where K: ToString + Introspect + Eq + Hash,

source§

impl<K, V: Introspect, S: BuildHasher> Introspect for HashMap<K, V, S>
where K: ToString + Introspect + Eq + Hash,

source§

impl<K: Introspect + Eq + Hash, S: BuildHasher> Introspect for IndexSet<K, S>

source§

impl<K: Introspect + Eq + Hash, S: BuildHasher> Introspect for HashSet<K, S>

source§

impl<K: Introspect + Eq + Hash, V: Introspect, S: BuildHasher> Introspect for IndexMap<K, V, S>

source§

default fn introspect_value(&self) -> String

source§

default fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

default fn introspect_len(&self) -> usize

source§

impl<K: Introspect + Eq + Hash, V: Introspect, S: BuildHasher> Introspect for HashMap<K, V, S>

source§

default fn introspect_value(&self) -> String

source§

default fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

default fn introspect_len(&self) -> usize

source§

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

source§

impl<T1: Introspect> Introspect for Range<T1>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T1: Introspect, T2: Introspect> Introspect for (T1, T2)

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T1: Introspect, T2: Introspect, T3: Introspect> Introspect for (T1, T2, T3)

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T1: Introspect, T2: Introspect, T3: Introspect, T4: Introspect> Introspect for (T1, T2, T3, T4)

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T> Introspect for PhantomData<T>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, _index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T: Array> Introspect for SmallVec<T>
where T::Item: Introspect,

source§

impl<T: Introspect> Introspect for Option<T>

source§

impl<T: Introspect> Introspect for (T,)

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

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

source§

impl<T: Introspect> Introspect for Box<T>

source§

impl<T: Introspect> Introspect for BinaryHeap<T>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'a>( &'a self, index: usize ) -> Option<Box<dyn IntrospectItem<'a> + 'a>>

source§

fn introspect_len(&self) -> usize

source§

impl<T: Introspect> Introspect for VecDeque<T>

source§

impl<T: Introspect> Introspect for Rc<T>

source§

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

source§

impl<T: Introspect> Introspect for Arc<T>

source§

impl<T: Introspect> Introspect for Vec<T>

source§

impl<T: Introspect> Introspect for RefCell<T>

source§

impl<T: Introspect> Introspect for Mutex<T>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T: Introspect> Introspect for Mutex<T>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<T: Introspect> Introspect for RwLock<T>

source§

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

source§

fn introspect_value(&self) -> String

source§

fn introspect_child( &self, index: usize ) -> Option<Box<dyn IntrospectItem<'_> + '_>>

source§

impl<V: Introspect + 'static, const C: usize> Introspect for ArrayVec<V, C>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'s>( &'s self, index: usize ) -> Option<Box<dyn IntrospectItem<'s> + 's>>

source§

fn introspect_len(&self) -> usize

source§

impl<const C: usize> Introspect for ArrayString<C>

source§

fn introspect_value(&self) -> String

source§

fn introspect_child<'a>( &'a self, _index: usize ) -> Option<Box<dyn IntrospectItem<'a>>>

Implementors§