Trait WithSchema

Source
pub trait WithSchema {
    // Required method
    fn schema(version: u32, context: &mut WithSchemaContext) -> Schema;
}
Expand description

This trait must be implemented by all data structures you wish to be able to save.

It must encode the schema for the datastructure when saved using the given version number. When files are saved, the schema is encoded into the file. when loading, the schema is inspected to make sure that the load will safely succeed. This is only for increased safety, the file format does not in fact use the schema for any other purpose, the design is schema-less at the core, the schema is just an added layer of safety (which can be disabled).

Required Methods§

Source

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Returns a representation of the schema used by this Serialize implementation for the given version. The WithSchemaContext can be used to guard against recursive data structures. See documentation of WithSchemaContext.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl WithSchema for &str

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for bool

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for char

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for f32

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for f64

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for i8

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for i16

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for i32

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for i64

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for i128

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for isize

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for str

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for u8

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for u16

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for u32

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for u64

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for u128

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for ()

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for usize

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for String

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for Arc<str>

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicBool

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicI8

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicI16

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicI32

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicI64

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicIsize

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicU8

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicU16

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicU32

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicU64

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for AtomicUsize

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for Duration

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for Error

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for PathBuf

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for SystemTime

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for BitSet

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for BitSet

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for BitVec

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl WithSchema for BitVec

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

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

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + 'static> WithSchema for BTreeSet<K>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + 'static, S: BuildHasher> WithSchema for HashSet<K, S>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + 'static, V: WithSchema + 'static> WithSchema for BTreeMap<K, V>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + Eq + Hash + 'static, S: BuildHasher> WithSchema for IndexSet<K, S>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + Eq + Hash + 'static, V: WithSchema + 'static, S: BuildHasher> WithSchema for HashMap<K, V, S>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<K: WithSchema + Eq + Hash + 'static, V: WithSchema + 'static, S: BuildHasher> WithSchema for IndexMap<K, V, S>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T1: WithSchema> WithSchema for (T1,)

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T1: WithSchema> WithSchema for Range<T1>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

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

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

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

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T> WithSchema for PhantomData<T>

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Source§

impl<T: Array + 'static> WithSchema for SmallVec<T>
where T::Item: WithSchema,

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for &[T]

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Box<[T]>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Box<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for BinaryHeap<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for VecDeque<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Rc<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Arc<[T]>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Arc<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static> WithSchema for Vec<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema + 'static, const N: usize> WithSchema for [T; N]

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for Option<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for Cell<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for RefCell<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for Mutex<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for Mutex<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema> WithSchema for RwLock<T>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<T: WithSchema, R: WithSchema> WithSchema for Result<T, R>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

impl<V: WithSchema, const C: usize> WithSchema for ArrayVec<V, C>

Source§

fn schema(version: u32, context: &mut WithSchemaContext) -> Schema

Source§

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

Source§

fn schema(_version: u32, _context: &mut WithSchemaContext) -> Schema

Implementors§