gremlin-client 0.8.10

A Rust client for Apache TinkerPop™
Documentation
use crate::conversion::FromGValue;

use crate::process::traversal::remote::Terminator;
use crate::{
    process::traversal::GraphTraversal, process::traversal::RemoteTraversalIterator, GremlinClient,
    GremlinResult,
};

#[derive(Clone)]
pub struct RemoteStrategy {
    client: GremlinClient,
}

impl RemoteStrategy {
    pub fn new(client: GremlinClient) -> RemoteStrategy {
        RemoteStrategy { client }
    }

    pub(crate) fn apply<S, E: FromGValue, A>(
        &self,
        traversal: &GraphTraversal<S, E, A>,
    ) -> GremlinResult<RemoteTraversalIterator<E>>
    where
        A: Terminator<E>,
    {
        let result = self.client.submit_traversal(traversal.bytecode())?;

        Ok(RemoteTraversalIterator::new(result))
    }
}