pub trait OutputFormatter: Send + Sync {
// Required methods
fn format(&self, records: &[StorageRecord]) -> Result<Vec<u8>>;
fn format_type(&self) -> OutputFormat;
}Expand description
Port: serialise a slice of StorageRecords to bytes in a given format.
§Example
use stygian_graph::ports::storage::{OutputFormat, OutputFormatter, StorageRecord};
use stygian_graph::domain::error::Result;
use serde_json::json;
struct JsonlFormatter;
impl OutputFormatter for JsonlFormatter {
fn format(&self, records: &[StorageRecord]) -> Result<Vec<u8>> {
let mut out = Vec::new();
for r in records {
let line = serde_json::to_string(r).unwrap();
out.extend_from_slice(line.as_bytes());
out.push(b'\n');
}
Ok(out)
}
fn format_type(&self) -> OutputFormat { OutputFormat::Jsonl }
}Required Methods§
Sourcefn format(&self, records: &[StorageRecord]) -> Result<Vec<u8>>
fn format(&self, records: &[StorageRecord]) -> Result<Vec<u8>>
Serialise records to owned bytes.
Sourcefn format_type(&self) -> OutputFormat
fn format_type(&self) -> OutputFormat
Which format this formatter produces.