pub trait BuildSchema {
// Required method
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent;
// Provided methods
fn type_name() -> Option<&'static str> { ... }
fn schema_metadata() -> SchemaMetadata { ... }
fn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec { ... }
}Required Methods§
Sourcefn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Build the schema content for this type.
Use ctx.build::<T>() for nested types - this handles caching
and recursion automatically.
Provided Methods§
Sourcefn type_name() -> Option<&'static str>
fn type_name() -> Option<&'static str>
The type name for registration in $types namespace.
Return Some("my-type") to register this type as $types.my-type.
Return None (default) for inline/anonymous types.
Sourcefn schema_metadata() -> SchemaMetadata
fn schema_metadata() -> SchemaMetadata
Optional metadata for this type’s schema node.
Override to provide description, deprecation status, defaults, or examples.
Sourcefn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec
fn build_schema_node(ctx: &mut SchemaBuilder) -> SchemaNodeSpec
Build the full node specification for this type.
Override this method to set ext_types or type_codegen on the node.
The default implementation delegates to build_schema and schema_metadata.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl BuildSchema for &str
impl BuildSchema for &str
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for ()
impl BuildSchema for ()
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for String
impl BuildSchema for String
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for Text
impl BuildSchema for Text
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for bool
impl BuildSchema for bool
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for f32
impl BuildSchema for f32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for f64
impl BuildSchema for f64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i8
impl BuildSchema for i8
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i16
impl BuildSchema for i16
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i32
impl BuildSchema for i32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i64
impl BuildSchema for i64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for i128
impl BuildSchema for i128
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for isize
impl BuildSchema for isize
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u8
impl BuildSchema for u8
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u16
impl BuildSchema for u16
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u32
impl BuildSchema for u32
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u64
impl BuildSchema for u64
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for u128
impl BuildSchema for u128
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl BuildSchema for usize
impl BuildSchema for usize
fn build_schema(_ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static, F: BuildSchema + 'static> BuildSchema for (A, B, C, D, E, F)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static, F: BuildSchema + 'static> BuildSchema for (A, B, C, D, E, F)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for (A, B, C, D, E)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for (A, B, C, D, E)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static> BuildSchema for (A, B, C, D)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static, D: BuildSchema + 'static> BuildSchema for (A, B, C, D)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static> BuildSchema for (A, B, C)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static, C: BuildSchema + 'static> BuildSchema for (A, B, C)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static, B: BuildSchema + 'static> BuildSchema for (A, B)
impl<A: BuildSchema + 'static, B: BuildSchema + 'static> BuildSchema for (A, B)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<A: BuildSchema + 'static> BuildSchema for (A,)
impl<A: BuildSchema + 'static> BuildSchema for (A,)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for BTreeMap<K, V>
BTreeMap<K, V> is represented as a map
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for BTreeMap<K, V>
BTreeMap<K, V> is represented as a map
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for HashMap<K, V>
HashMap<K, V> is represented as a map
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for HashMap<K, V>
HashMap<K, V> is represented as a map
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for IndexMap<K, V>
IndexMap<K, V> is represented as a map (preserves insertion order)
impl<K: BuildSchema + 'static, V: BuildSchema + 'static> BuildSchema for IndexMap<K, V>
IndexMap<K, V> is represented as a map (preserves insertion order)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for Result<T, E>
Result<T, E> is represented as a union: ok(T) | err(E)
impl<T: BuildSchema + 'static, E: BuildSchema + 'static> BuildSchema for Result<T, E>
Result<T, E> is represented as a union: ok(T) | err(E)
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Arc<T>
Arc delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Arc<T>
Arc
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Box<T>
Box delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Box<T>
Box
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Option<T>
Option is represented as a union: some(T) | none(null)
impl<T: BuildSchema + 'static> BuildSchema for Option<T>
Option
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Rc<T>
Rc delegates to T
impl<T: BuildSchema + 'static> BuildSchema for Rc<T>
Rc
fn build_schema(ctx: &mut SchemaBuilder) -> SchemaNodeContent
Source§impl<T: BuildSchema + 'static> BuildSchema for Vec<T>
Vec is represented as an array with item type T
impl<T: BuildSchema + 'static> BuildSchema for Vec<T>
Vec