| Crates.io | rsmgclient |
| lib.rs | rsmgclient |
| version | 3.0.0 |
| created_at | 2020-08-24 18:20:03.698625+00 |
| updated_at | 2025-11-20 14:17:59.864855+00 |
| description | Memgraph database adapter for Rust programming language. |
| homepage | https://memgraph.com |
| repository | https://github.com/memgraph/rsmgclient |
| max_upload_size | |
| id | 280245 |
| size | 941,374 |
rsmgclient is a Memgraph database adapter for Rust
programming language. The rsmgclient crate is the current implementation of
the adapter. It is implemented as a wrapper around
mgclient, the official Memgraph C/C++
client library.
Once prerequisites are met, if you want to use rsmgclient as a library for
your own Rust project, you can install it using cargo:
cargo install rsmgclient
Windows Users: If you encounter OpenSSL-related build issues, you can install OpenSSL via vcpkg:
vcpkg install openssl:x64-windows-static
Then set the environment variables:
set OPENSSL_LIB_DIR=C:\vcpkg\installed\x64-windows-static\lib
set OPENSSL_INCLUDE_DIR=C:\vcpkg\installed\x64-windows-static\include
set OPENSSL_STATIC=1
To contribute into rsmgclient or just to look more closely how it is made,
you will need:
mgclient requirements.Once rsmgclient is cloned, you will need to build it and then you can run
the test suite to verify it is working correctly:
git submodule update --init --recursive
cargo build
# Please run Memgraph based on the quick start guide
cargo test
On MacOS, the build will automatically detect OpenSSL using MacPorts or Homebrew.
On Windows, the build supports multiple OpenSSL configurations:
OPENSSL_LIB_DIR and OPENSSL_INCLUDE_DIR environment variablesC:\Program Files\OpenSSL-Win64\ if no custom paths are providedbindgen requires libclang which is part of LLVM. On Windows, if LLVM is not installed, download it from the LLVM download page and install the LLVM.exe file (make sure to select the option to add LLVM to PATH).
Online documentation can be found on docs.rs pages.
src/main.rs is an example showing some of the basic commands:
use rsmgclient::{ConnectParams, Connection, MgError, Value};
fn execute_query() -> Result<(), MgError> {
// Connect to Memgraph.
let connect_params = 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)
}
}