pub enum SchemaType {
Show 38 variants
Ref {
id: TypeId,
metadata: MetadataEnvelope,
},
Bool {
metadata: MetadataEnvelope,
},
S8 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
S16 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
S32 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
S64 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
U8 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
U16 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
U32 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
U64 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
F32 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
F64 {
restrictions: Option<NumericRestrictions>,
metadata: MetadataEnvelope,
},
Char {
metadata: MetadataEnvelope,
},
String {
metadata: MetadataEnvelope,
},
Record {
fields: Vec<NamedFieldType>,
metadata: MetadataEnvelope,
},
Variant {
cases: Vec<VariantCaseType>,
metadata: MetadataEnvelope,
},
Enum {
cases: Vec<String>,
metadata: MetadataEnvelope,
},
Flags {
flags: Vec<String>,
metadata: MetadataEnvelope,
},
Tuple {
elements: Vec<SchemaType>,
metadata: MetadataEnvelope,
},
List {
element: Box<SchemaType>,
metadata: MetadataEnvelope,
},
FixedList {
element: Box<SchemaType>,
length: u32,
metadata: MetadataEnvelope,
},
Map {
key: Box<SchemaType>,
value: Box<SchemaType>,
metadata: MetadataEnvelope,
},
Option {
inner: Box<SchemaType>,
metadata: MetadataEnvelope,
},
Result {
spec: ResultSpec,
metadata: MetadataEnvelope,
},
Text {
restrictions: TextRestrictions,
metadata: MetadataEnvelope,
},
Binary {
restrictions: BinaryRestrictions,
metadata: MetadataEnvelope,
},
Path {
spec: PathSpec,
metadata: MetadataEnvelope,
},
Url {
restrictions: UrlRestrictions,
metadata: MetadataEnvelope,
},
Uuid {
metadata: MetadataEnvelope,
},
Datetime {
metadata: MetadataEnvelope,
},
Duration {
metadata: MetadataEnvelope,
},
Quantity {
spec: QuantitySpec,
metadata: MetadataEnvelope,
},
Union {
spec: UnionSpec,
metadata: MetadataEnvelope,
},
Secret {
spec: SecretSpec,
metadata: MetadataEnvelope,
},
QuotaToken {
spec: QuotaTokenSpec,
metadata: MetadataEnvelope,
},
PermissionCard {
spec: PermissionCardSpec,
metadata: MetadataEnvelope,
},
Future {
inner: Option<Box<SchemaType>>,
metadata: MetadataEnvelope,
},
Stream {
inner: Option<Box<SchemaType>>,
metadata: MetadataEnvelope,
},
}Expand description
One schema type in the recursive in-memory representation.
Every variant carries a MetadataEnvelope so docs / aliases / examples /
deprecation / role can attach to any node, not only to registered defs or
named positions. Use SchemaType::metadata / SchemaType::metadata_mut
for ergonomic access regardless of variant.
Recursive positions hold owned, boxed children (rather than indices) so
consumers can walk and pattern-match the schema directly without chasing
indices into a flat node list. The WIT-shaped flat form is reconstructed
on demand by super::wit.
Closed sum types come in two shapes that differ by how the decoder learns which branch a value belongs to:
SchemaType::Variantis a carried-tag sum: the value explicitly carries its case (viasuper::VariantValuePayload::case). Zero- inference decoding. Natural mapping for language-level algebraic data types.SchemaType::Unionis an inferred-tag sum: the value does not carry its tag. Each branch declares aDiscriminatorRuleand the decoder picks the branch whose rule matches the raw value.
Variants§
Ref
Reference to a named definition in the enclosing
super::SchemaGraph.
Bool
Fields
metadata: MetadataEnvelopeS8
S16
S32
S64
U8
U16
U32
U64
F32
F64
Char
Fields
metadata: MetadataEnvelopeString
Fields
metadata: MetadataEnvelopeRecord
Variant
Enum
Flags
Tuple
List
FixedList
Map
Option
Result
Text
Binary
Path
Url
Uuid
Fields
metadata: MetadataEnvelopeDatetime
Fields
metadata: MetadataEnvelopeDuration
Fields
metadata: MetadataEnvelopeQuantity
Union
Secret
QuotaToken
PermissionCard
Future
Stream
Implementations§
Source§impl SchemaType
impl SchemaType
Sourcepub fn metadata(&self) -> &MetadataEnvelope
pub fn metadata(&self) -> &MetadataEnvelope
Per-node metadata envelope (docs / aliases / examples / deprecation / role). Always returns a reference; empty envelopes are the default.
Sourcepub fn metadata_mut(&mut self) -> &mut MetadataEnvelope
pub fn metadata_mut(&mut self) -> &mut MetadataEnvelope
Mutable access to the per-node metadata envelope.
Sourcepub fn with_metadata(self, metadata: MetadataEnvelope) -> SchemaType
pub fn with_metadata(self, metadata: MetadataEnvelope) -> SchemaType
Replace this node’s metadata envelope, returning self for chaining.
Sourcepub fn numeric_repr(&self) -> Option<NumericRepr>
pub fn numeric_repr(&self) -> Option<NumericRepr>
The numeric representation of this node, if it is a numeric type.
Sourcepub fn numeric_restrictions(&self) -> Option<&NumericRestrictions>
pub fn numeric_restrictions(&self) -> Option<&NumericRestrictions>
The numeric restrictions of this node, if it is a numeric type with restrictions set.
pub fn ref_to(id: TypeId) -> SchemaType
pub fn bool() -> SchemaType
pub fn s8() -> SchemaType
pub fn s16() -> SchemaType
pub fn s32() -> SchemaType
pub fn s64() -> SchemaType
pub fn u8() -> SchemaType
pub fn u16() -> SchemaType
pub fn u32() -> SchemaType
pub fn u64() -> SchemaType
pub fn f32() -> SchemaType
pub fn f64() -> SchemaType
pub fn char() -> SchemaType
pub fn string() -> SchemaType
pub fn uuid() -> SchemaType
pub fn datetime() -> SchemaType
pub fn duration() -> SchemaType
pub fn record(fields: Vec<NamedFieldType>) -> SchemaType
Sourcepub fn record_from_fields<N>(
fields: impl IntoIterator<Item = (N, SchemaType)>,
) -> SchemaType
pub fn record_from_fields<N>( fields: impl IntoIterator<Item = (N, SchemaType)>, ) -> SchemaType
Convenience: build a record whose fields have no metadata.
pub fn variant(cases: Vec<VariantCaseType>) -> SchemaType
pub fn enum(cases: Vec<String>) -> SchemaType
pub fn flags(flags: Vec<String>) -> SchemaType
pub fn tuple(elements: Vec<SchemaType>) -> SchemaType
pub fn list(element: SchemaType) -> SchemaType
pub fn fixed_list(element: SchemaType, length: u32) -> SchemaType
pub fn map(key: SchemaType, value: SchemaType) -> SchemaType
pub fn option(inner: SchemaType) -> SchemaType
pub fn result(spec: ResultSpec) -> SchemaType
pub fn text(restrictions: TextRestrictions) -> SchemaType
pub fn binary(restrictions: BinaryRestrictions) -> SchemaType
pub fn path(spec: PathSpec) -> SchemaType
pub fn url(restrictions: UrlRestrictions) -> SchemaType
pub fn quantity(spec: QuantitySpec) -> SchemaType
pub fn union(spec: UnionSpec) -> SchemaType
pub fn secret(spec: SecretSpec) -> SchemaType
pub fn quota_token(spec: QuotaTokenSpec) -> SchemaType
pub fn permission_card(spec: PermissionCardSpec) -> SchemaType
pub fn future(inner: Option<SchemaType>) -> SchemaType
pub fn stream(inner: Option<SchemaType>) -> SchemaType
Trait Implementations§
Source§impl Clone for SchemaType
impl Clone for SchemaType
Source§fn clone(&self) -> SchemaType
fn clone(&self) -> SchemaType
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more