aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/renderer/structural/structural_data.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_core/src/renderer/structural/structural_data.rs')
-rw-r--r--mingling_core/src/renderer/structural/structural_data.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/mingling_core/src/renderer/structural/structural_data.rs b/mingling_core/src/renderer/structural/structural_data.rs
new file mode 100644
index 0000000..1cafac3
--- /dev/null
+++ b/mingling_core/src/renderer/structural/structural_data.rs
@@ -0,0 +1,15 @@
+use serde::Serialize;
+
+/// Marker trait for types that support structured output (JSON / YAML / TOML / RON).
+///
+/// This trait is a **supertrait** of `serde::Serialize` and is sealed via
+/// `__private::StructuralDataSealed`. It can only be implemented through:
+///
+/// - `#[derive(StructuralData)]`
+/// - `pack_structural!`
+/// - `group_structural!`
+///
+/// These entry points also register the type in the global `STRUCTURED_TYPES`
+/// registry, which is required for the `structural_render` match arm to be generated.
+#[doc(hidden)]
+pub trait StructuralData: Serialize + crate::__private::StructuralDataSealed {}