pub trait ExtensionNamespace {
fn name(&self) -> &'static str;
fn top_level_only(&self) -> bool;
fn extension_type(&self) -> ExtensionType;
fn parse(s: &str) -> Option<Self>
where
Self: Sized;
}
type _DynAssertion = Box<dyn ExtensionNamespace>;
pub enum ExtensionType {
Union(&'static [ExtensionType]),
Map(&'static [(&'static str, ExtensionType)]),
String,
Integer,
Float,
Boolean,
Null,
Array(Box<ExtensionType>),
Tuple(&'static [ExtensionType]),
}
pub enum CoreExtension {
Swon,
Variant,
}