pub struct DxDocument {
pub context: IndexMap<String, DxLlmValue>,
pub refs: IndexMap<String, String>,
pub sections: IndexMap<char, DxSection>,
pub section_names: IndexMap<char, String>,
pub entry_order: Vec<EntryRef>,
}Expand description
Top-level document container for the DX LLM format.
A DxDocument represents a complete DX document in the LLM format,
containing context configuration, reference definitions, and data sections.
§Structure
#c context_key=value // Context section
#: ref_key=ref_value // Reference definitions
#d(id,name)[ // Data section 'd' with schema
1,Alice
2,Bob
]§Examples
§Creating a Document
use serializer::llm::{DxDocument, DxSection, DxLlmValue};
let mut doc = DxDocument::new();
// Add context
doc.context.insert("version".to_string(), DxLlmValue::Str("1.0".to_string()));
// Add a reference
doc.refs.insert("company".to_string(), "Acme Corp".to_string());
// Add a data section
let mut section = DxSection::new(vec!["id".to_string(), "name".to_string()]);
section.add_row(vec![DxLlmValue::Num(1.0), DxLlmValue::Str("Alice".to_string())]).unwrap();
doc.sections.insert('d', section);§Thread Safety
DxDocument implements Send + Sync and can be safely shared between threads
for concurrent read access. For mutation, use appropriate synchronization.
§See Also
DxSection- Data section with schema and rowsDxLlmValue- Value type for section data
Fields§
§context: IndexMap<String, DxLlmValue>Context/config section (#c).
Contains configuration key-value pairs that apply to the entire document.
refs: IndexMap<String, String>Reference definitions (#:).
Defines reusable string values that can be referenced with ^key syntax.
This enables deduplication of repeated values for token efficiency.
sections: IndexMap<char, DxSection>Data sections (#<letter>).
Each section is identified by a single character (e.g., ‘d’ for #d).
Sections contain tabular data with a schema and rows.
section_names: IndexMap<char, String>Section names mapping (char ID -> full name like “dependencies”)
Maps single-character section IDs to their full names for human-readable output.
entry_order: Vec<EntryRef>Entry order tracking
Tracks the order of all entries (context keys and section IDs) as they appear in the original document. Each entry is either a context key or a section ID.
Implementations§
Source§impl DxDocument
impl DxDocument
Sourcepub fn get_path(&self, path: &str) -> Option<&DxLlmValue>
pub fn get_path(&self, path: &str) -> Option<&DxLlmValue>
Get a value by canonical LLM path.
This supports both root keys (project) and object paths
(project.name) where the root value is an inline object such as
project(name=dx-devtools version=0.1.0).
Sourcepub fn section_by_name(&self, name: &str) -> Option<&DxSection>
pub fn section_by_name(&self, name: &str) -> Option<&DxSection>
Find a wrapped dataframe/table section by its full section name.
Trait Implementations§
Source§impl Clone for DxDocument
impl Clone for DxDocument
Source§fn clone(&self) -> DxDocument
fn clone(&self) -> DxDocument
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DxDocument
impl Debug for DxDocument
Source§impl Default for DxDocument
impl Default for DxDocument
Source§impl From<&DxDocument> for MachineDocument
impl From<&DxDocument> for MachineDocument
Source§fn from(doc: &DxDocument) -> Self
fn from(doc: &DxDocument) -> Self
Source§impl From<&MachineDocument> for DxDocument
impl From<&MachineDocument> for DxDocument
Source§fn from(m: &MachineDocument) -> Self
fn from(m: &MachineDocument) -> Self
Source§impl PartialEq for DxDocument
impl PartialEq for DxDocument
Source§fn eq(&self, other: &DxDocument) -> bool
fn eq(&self, other: &DxDocument) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DxDocument
Auto Trait Implementations§
impl Freeze for DxDocument
impl RefUnwindSafe for DxDocument
impl Send for DxDocument
impl Sync for DxDocument
impl Unpin for DxDocument
impl UnsafeUnpin for DxDocument
impl UnwindSafe for DxDocument
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.