Crate gremlin_client

source ·
Expand description

Experimental Rust client for Apache Tinkerpop Gremlin Server. The driver supports the execution of raw Gremlin queries and GLV traversal

You can use gremlin-client this lines in your Cargo.toml

[dependencies]
gremlin-client = "*"

For async support via async-std

[dependencies]
gremlin-client =  { version = "*", features = ["async_std"] }

Here it is an usage example:

Synchronous

    
use gremlin_client::{GremlinClient, Vertex};

fn main() -> Result<(), Box<std::error::Error>> {
   let client = GremlinClient::connect("localhost")?;

   let results = client
       .execute("g.V(param)", &[("param", &1)])?
       .filter_map(Result::ok)
       .map(|f| f.take::<Vertex>())
       .collect::<Result<Vec<Vertex>, _>>()?;

   println!("{:?}", results);

   Ok(())
}

Asynchronous

    
use gremlin_client::{aio::GremlinClient, Vertex};
use async_std::task;
use async_std::prelude::*;

fn main() -> Result<(), Box<std::error::Error>> {

   task::block_on(async {
    let client = GremlinClient::connect("localhost").await?;
    let results = client
           .execute("g.V(param)", &[("param", &1)]).await?
        .filter_map(Result::ok)
        .map(|f| f.take::<Vertex>())
        .collect::<Result<Vec<Vertex>, _>>().await?;
        println!("{:?}", results);
        Ok(())
   })    

}

Here it is an example with traversal:

Synchronous

    
use gremlin_client::{GremlinClient, Vertex, process::traversal::traversal};

fn main() -> Result<(), Box<std::error::Error>> {
   let client = GremlinClient::connect("localhost")?;

   let g = traversal().with_remote(client);

   let results = g.v(()).has_label("person").has(("name","Jon")).to_list()?;   
   
   println!("{:?}", results);
   Ok(())
}

Aynchronous

    
use gremlin_client::{aio::GremlinClient, Vertex, process::traversal::traversal};
use async_std::task;
use async_std::prelude::*;

fn main() -> Result<(), Box<std::error::Error>> {

    task::block_on(async {

        let client = GremlinClient::connect("localhost").await?;

        let g = traversal().with_remote_async(client);

        let results = g.v(()).has_label("person").has(("name","Jon")).to_list().await?;   
   
        println!("{:?}", results);
        Ok(())
   })
}

Re-exports§

Modules§

Structs§

Enums§

Traits§

Type Aliases§