OutputFormatter

Trait OutputFormatter 

Source
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§

Source

fn format(&self, records: &[StorageRecord]) -> Result<Vec<u8>>

Serialise records to owned bytes.

Source

fn format_type(&self) -> OutputFormat

Which format this formatter produces.

Implementors§