rsmgclient - Rust Memgraph Client

rsmgclient is Memgraph database adapter for Rust programming language. rsmgclient crate is the current implementation of the adapter. It is implemented as a wrapper around mgclient, the official Memgraph C/C++ client library.

Installation

Prerequisites

Installing from crates.io

Once prerequisites are met, if you want to use rsmgclient as library for your own Rust project, you can install it by using cargo:

bash cargo install rsmgclient

Building from Source

To contribute into rsmgclient or just looking closely how it is made, you will need:

Once rsmgclient is cloned, you will need to build it and then you can run the test suite to verify it is working correctly:

```bash git submodule update --init cargo build

Run Memgraph based on the quick start guide

cargo test ```

Documentation

Online documentation can be found on docs.rs pages.

Code Sample

src/main.rs is an example showing some of the basic commands:

```rust use rsmgclient::{ConnectParams, Connection, MgError, Value};

fn executequery() -> Result<(), MgError> { // Connect to Memgraph. let connectparams = ConnectParams { host: Some(String::from("localhost")), ..Default::default() }; let mut connection = Connection::connect(&connect_params)?;

// Create simple graph.
connection.execute_without_results(
    "CREATE (p1:Person {name: 'Alice'})-[l1:Likes]->(m:Software {name: 'Memgraph'}) \
     CREATE (p2:Person {name: 'John'})-[l2:Likes]->(m);",
)?;

// Fetch the graph.
let columns = connection.execute("MATCH (n)-[r]->(m) RETURN n, r, m;", None)?;
println!("Columns: {}", columns.join(", "));
for record in connection.fetchall()? {
    for value in record.values {
        match value {
            Value::Node(node) => print!("{}", node),
            Value::Relationship(edge) => print!("-{}-", edge),
            value => print!("{}", value),
        }
    }
    println!();
}
connection.commit()?;

Ok(())

}

fn main() { if let Err(error) = execute_query() { panic!("{}", error) } } ```