plexus-engine 0.3.6

Engine integration traits for consuming Plexus plans
Documentation
use crate::Value;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EntityRef {
    Node(u64),
    Rel(u64),
}

/// Optional adapter trait for storage-backed engines that map Plexus refs
/// to internal storage handles/IDs.
pub trait StorageAdapter {
    type Error: std::error::Error + Send + Sync + 'static;

    fn resolve(&self, entity: EntityRef) -> Result<Option<u64>, Self::Error>;
    fn get_property(&self, entity: EntityRef, key: &str) -> Result<Value, Self::Error>;
    fn set_property(
        &mut self,
        entity: EntityRef,
        key: &str,
        value: Value,
    ) -> Result<(), Self::Error>;
    fn remove_property(&mut self, entity: EntityRef, key: &str) -> Result<(), Self::Error>;
}