This is a maintained rust project that exposes the cpp driver at cpp-driver in a somewhat-sane crate.

Overview

Build Status Current Version License: MPL-2.0

cassandra-rs

This is a maintained rust project that exposes the cpp driver at https://github.com/datastax/cpp-driver/ in a somewhat-sane crate.

For the wrapper to work, you must first have installed the datastax-cpp driver.

Follow the steps on the cpp driver docs to do so.

Make sure that the driver (specifically libcassandra_static.a and libcassandra.so) are in your /usr/local/lib64/ directory

You can use it from cargo with

    [dependencies.cassandra]
    git = "https://github.com/tupshin/cassandra-rs"

Or just

    [dependencies]
    cassandra="*"

Here's a straightforward example found in simple.rs:

{ let result = session.execute(&query).wait().unwrap(); println!("{}", result); for row in result.iter() { let col: String = row.get_col_by_name(col_name).unwrap(); println!("ks name = {}", col); } } err => println!("{:?}", err), } }">
    #[macro_use(stmt)]
    extern crate cassandra;
    use cassandra::*;
    use std::str::FromStr;
    
    
    fn main() {
        let query = stmt!("SELECT keyspace_name FROM system_schema.keyspaces;");
        let col_name = "keyspace_name";
    
        let contact_points = ContactPoints::from_str("127.0.0.1").unwrap();
    
        let mut cluster = Cluster::default();
        cluster.set_contact_points(contact_points).unwrap();
        cluster.set_load_balance_round_robin();
    
        match cluster.connect() {
            Ok(ref mut session) => {
                let result = session.execute(&query).wait().unwrap();
                println!("{}", result);
                for row in result.iter() {
                    let col: String = row.get_col_by_name(col_name).unwrap();
                    println!("ks name = {}", col);
                }
            }
            err => println!("{:?}", err),
        }
    }

There's additional examples included with the project in src/examples.

Comments
  • calling get_col_by_name causes panic and program exit

    calling get_col_by_name causes panic and program exit

    This snippet:

    let query = format!("select column_name, type from system_schema.columns where keyspace_name = '{}' and table_name = '{}'", keyspace, table);
                let schema_query = Statement::new(&query, 0);
    
                let result = self.session.execute(&schema_query).wait().unwrap();
                for row in result {
                    let name : String = row.get_col_by_name("column_name").unwrap();
                    let ftype : String = row.get_col_by_name("type").unwrap();
    
                    println!("{} {}", name, ftype);
                }
    

    Causes this error:

    thread 'main' panicked at 'Unsupported type: CASS_VALUE_TYPE_BLOB', /Users/jhaddad/.multirust/toolchains/nightly/cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-0.6.10/src/cassandra/column.rs:279

    The odd thing is that re-running the same pgoram gives me another error; except sometimes it errors with 'Unsupported type: CASS_VALUE_TYPE_BLOB'.

    opened by rustyrazorblade 7
  • Timestamps

    Timestamps

    @tupshin @rustyrazorblade

    Currently it is almost impossible to work with Timestamp values how about implementing traits of chrono or time ? What do you think ?

    opened by ernestas-poskus 6
  • Attempting to recreate simple example fails on a syntax error

    Attempting to recreate simple example fails on a syntax error

    Rust v1.0
    [cqlsh 4.1.1 | Cassandra 2.0.14 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
    

    My code is nearly the same as the code in examples/

    extern crate cassandra;
    use cassandra::*;
    static CONTACT_POINTS:&'static str = "172.20.20.10";
    
    fn main() {
      println!("Before cluster connect");
      let cluster = &CassCluster::new()
                          .set_contact_points(CONTACT_POINTS).unwrap()
                          .set_load_balance_round_robin().unwrap();
    
      println!("Before session connect");
      let mut session = CassSession::new().connect(&cluster).wait().unwrap();
      println!("Before session execute");
      let result = session.execute("SELECT keyspace_name FROM system.schema_keyspaces;", 0).wait().unwrap();
    
      println!("{:?}", result);
    
      session.close().wait().unwrap();
    }
    

    And I get the output & error:

    in Ticks/ on master
    › cargo run --verbose
           Fresh gcc v0.3.5
           Fresh libc v0.1.7
           Fresh cql_bindgen v0.0.11
           Fresh cassandra v0.2.5
           Fresh time v0.1.25
           Fresh Ticks v0.1.0 (file:///Users/cschneid/Code/Rust/Ticks)
         Running `target/debug/Ticks`
    Before cluster connect
    Before session connect
    Before session execute
    thread '<main>' panicked at 'called `Result::unwrap()` on an `Err` value: "Syntax error"', /Users/rustbuild/src/rust-buildbot/slave/stable-dist-rustc-mac/build/src/libcore/result.rs:729
    Process didn't exit successfully: `target/debug/Ticks` (exit code: 101)
    

    The query runs fine in the cqlsh interface, so there's something else going on with the result, or result unwraping. I have the c++ library linked from their homebrew recipe, which is 1.0.0.

    opened by cschneid 6
  • Set-up Travis builds, and include build status in README.md

    Set-up Travis builds, and include build status in README.md

    Tested that this 'worked'* for fork. ~Will now need https://travis-ci.org/tupshin/cassandra-rs (or equivalent from another maintainer) to be set up.~

    * - https://travis-ci.org/BenjaminGill-Metaswitch/cassandra-rs: the build failed, but it did at least make an attempt.

    opened by BenjaminGill-Metaswitch 3
  • Successful travis build against nightly Rust

    Successful travis build against nightly Rust

    This PR extends the current .travis.yml to support nightly and beta Rust, and includes some minor tweaks required to get nightly to build and test cleanly.

    Beta/stable look as if they've been broken by 2c57a8216e26cb7e16d46c2a718b171d5b1d0286, so they are not expected to build cleanly yet. Likewise for the plethora of warnings on nightly.

    opened by bjgill 2
  • Change are really breakin.. for 0.8.0

    Change are really breakin.. for 0.8.0

    I get

    thread '::test_find_one' panicked at 'called `Result::unwrap()` on an `Err` value: Error(LIB_NULL_VALUE(CASS_ERROR_LIB_NULL_VALUE), State { next_error: None, backtrace: None })', ../src/libcore/result.rs:837
    

    https://github.com/tupshin/cassandra-rs/commit/2c57a8216e26cb7e16d46c2a718b171d5b1d0286

    This is related to to_result("").unwrap().into()

    opened by ernestas-poskus 2
  • Planning to maintain this?

    Planning to maintain this?

    Hi,

    can you share your plans for progress on this driver? I am about to build more than a toy project on top of Rust/C* and am looking for the driver to use.

    Jan

    opened by algermissen 2
  • TableMeta should implement Display

    TableMeta should implement Display

    : the trait bound cassandra::TableMeta: std::fmt::Display is not satisfied [E0277] src/main.rssrc/main.rs:188 :188 println!("Schema: {}", schema);

    opened by rustyrazorblade 2
  • Consider splitting into two crates

    Consider splitting into two crates

    Ideally, crates that provide C-to-Rust bindings have the suffix -sys, but that doesn't appear to be the case here. This allows multiple nice user-facing interfaces to be built on top of shared code, and avoids an issue where you try to link to the same native library multiple times.

    opened by shepmaster 2
  • Free cassandra futures

    Free cassandra futures

    As reported in #4, these were leaked previously. With this patch in place memory usage is constant, and valgrind is happy.

    The session future needed some different handling due to its move return.

    I wonder if it would make sense to implement Drop directly on cql_bindgen::CassFuture instead, as that would cover all these cases.

    opened by gwicke 2
  • New version of cassandra-sys-rs required to build cleanly on stable

    New version of cassandra-sys-rs required to build cleanly on stable

    Currently, one of this project's dependencies does not build on stable Rust, so this does not either.

    To fix, merge https://github.com/tupshin/cassandra-sys-rs/pull/6, publish the new version, and update this crate to use the new version.

    opened by BenjaminGill-Metaswitch 1
  • Transfer ownership of crate to new maintainer

    Transfer ownership of crate to new maintainer

    Hi,

    I have forked this project to https://github.com/Metaswitch/cassandra-rs and intend to maintain it there. If you no longer intend to maintain this project, please could you contact me and/or Alex Crichton to arrange a transfer of the cassandra and cassandra-sys crates to myself? I would like to avoid forking on crates.io, so that we don't leave the stale crates in place to trip people up in future.

    To anyone else who is interested - my maintained fork is available on crates.io at cassandra-cpp.

    Thanks,

    --KW 8-)

    opened by kw217 2
  • Unexpected panic/unwrap when retrieving null value from database

    Unexpected panic/unwrap when retrieving null value from database

    When retrieving data from the database I get this error if there is a null – tried with bool, i32, i64m double and worked fine – issue only with string.

    RUST_BACKTRACE=1 cargo run
        Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
         Running `target/debug/cassandra-connector`
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error(LIB_NULL_VALUE(CASS_ERROR_LIB_NULL_VALUE), State { next_error: None, backtrace: Some(stack backtrace:
       0:     0x7fe28e3f0401 - backtrace::backtrace::libunwind::trace
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.0/src/backtrace/mod.rs:90
                             - backtrace::backtrace::trace<closure>
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.0/src/backtrace/mod.rs:42
       1:     0x7fe28e3f1408 - backtrace::capture::{{impl}}::new
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.0/src/lib.rs:101
       2:     0x7fe28e3e82c1 - error_chain::make_backtrace
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:411
       3:     0x7fe28e3e8377 - error_chain::{{impl}}::default
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/error-chain-0.7.2/src/lib.rs:462
       4:     0x7fe28e2b464b - cassandra_sys::error::{{impl}}::from_kind
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-sys-0.8.7/src/error.rs:6
       5:     0x7fe28e2b4841 - cassandra_sys::error::{{impl}}::from
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-sys-0.8.7/src/error.rs:6
       6:     0x7fe28e2aaf51 - core::convert::{{impl}}::into<cassandra_sys::error::ErrorKind,cassandra_sys::error::Error>
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libcore/convert.rs:271
       7:     0x7fe28e2a0be9 - cassandra_sys::error::{{impl}}::to_result<&str>
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-sys-0.8.7/src/error.rs:133
       8:     0x7fe28e2b17c9 - cassandra::cassandra::column::{{impl}}::get_string
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-0.8.1/src/cassandra/column.rs:270
       9:     0x7fe28e299e65 - cassandra_connector::show
                            at /home/proj/cassandra-connector/src/main.rs:38
      10:     0x7fe28e29ab19 - cassandra_connector::main
                            at /home/proj/cassandra-connector/src/main.rs:76
      11:     0x7fe28e4095ca - panic_unwind::__rust_maybe_catch_panic
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98
      12:     0x7fe28e4031b6 - std::panicking::try<(),fn()>
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:434
                             - std::panic::catch_unwind<fn(),()>
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panic.rs:351
                             - std::rt::lang_start
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/rt.rs:57
      13:     0x7fe28e29b042 - main
      14:     0x7fe28c8f0b34 - __libc_start_main
      15:     0x7fe28e28d3e8 - <unknown>
      16:                0x0 - <unknown>) })', /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libcore/result.rs:837
    stack backtrace:
       1:     0x7fe28e4008fa - std::sys::imp::backtrace::tracing::imp::write::h3188f035833a2635
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42
       2:     0x7fe28e40286f - std::panicking::default_hook::{{closure}}::h6385b6959a2dd25b
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:349
       3:     0x7fe28e40246e - std::panicking::default_hook::he4f3b61755d7fa95
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:365
       4:     0x7fe28e402cb7 - std::panicking::rust_panic_with_hook::hf00b8130f73095ec
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:553
       5:     0x7fe28e402af4 - std::panicking::begin_panic::h6227f62cb2cdaeb4
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:515
       6:     0x7fe28e402a69 - std::panicking::begin_panic_fmt::h173eadd80ae64bec
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:499
       7:     0x7fe28e4029f7 - rust_begin_unwind
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:475
       8:     0x7fe28e4331ed - core::panicking::panic_fmt::h3b2d1e30090844ff
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libcore/panicking.rs:69
       9:     0x7fe28e2aa215 - core::result::unwrap_failed::h6f1089a4164b68db
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libcore/macros.rs:29
      10:     0x7fe28e2a58bb - <core::result::Result<T, E>>::unwrap::hddf0ca9c49ea9914
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libcore/result.rs:737
      11:     0x7fe28e2b187a - cassandra::cassandra::column::Column::get_string::he370ca9df985f0ee
                            at /opt/rust/.cargo/registry/src/github.com-1ecc6299db9ec823/cassandra-0.8.1/src/cassandra/column.rs:270
      12:     0x7fe28e299e65 - cassandra_connector::show::hb977a687937c57f0
                            at /home/proj/cassandra-connector/src/main.rs:38
      13:     0x7fe28e29ab19 - cassandra_connector::main::h0159580624f528ae
                            at /home/proj/cassandra-connector/src/main.rs:76
      14:     0x7fe28e4095ca - __rust_maybe_catch_panic
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98
      15:     0x7fe28e4031b6 - std::rt::lang_start::h65647f6e36cffdae
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:434
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panic.rs:351
                            at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/rt.rs:57
      16:     0x7fe28e29b042 - main
      17:     0x7fe28c8f0b34 - __libc_start_main
      18:     0x7fe28e28d3e8 - <unknown>
      19:                0x0 - <unknown>
    

    I was hoping that the program would panic with the message “Bad string value! Error message….” As it does with other data types. (for the other types in the database it worked as expected: bool, i32, i62, double)

    #[macro_use(stmt)]
    
    extern crate cassandra;
    use cassandra::*;
    use std::str::FromStr;
    #[derive(Debug,PartialEq,Clone,Copy)]
    struct Basic {
        bln: bool,
        flt: f32,
        dbl: f64,
        i32: i32,
        i64: i64,
    }
    fn insert_into_basic(session: &mut Session, key: &str, basic: Basic) -> CassResult {
        let mut statement = stmt!("INSERT INTO examples.basic (key, bln, flt, dbl, i32, i64) VALUES \
                                   (?, ?, ?, ?, ?, ?);");
        statement.bind(0, key);
        statement.bind(1, basic.bln);
        statement.bind(2, basic.flt);
        statement.bind(3, basic.dbl);
        statement.bind(4, basic.i32);
        statement.bind(5, basic.i64);
        let res = session.execute(&statement).wait().unwrap();
        res
    }
    fn select_all(session: &mut Session) -> CassResult {
        let stmt = stmt!("SELECT * FROM examples.basic");
        let result = match session.execute(&stmt).wait() {
            Result::Ok(val) => val,
            Result::Err(err) => panic!("Bad select! {}", err),
        };
        result
    }
    fn show(data: &CassResult) {
        for i in data.iter() {
            match i.get_column(5) {
                Result::Ok(val) => {
                    match val.get_string() {
                        Result::Ok(s) => println!("{:?}", s),
                        Result::Err(err) => {
                            panic!("Bad string value! {}", err);
                        }
                   }
                }
                Result::Err(err) => panic!("Bad column! {}", err),
            };
        }
    }
    fn main() {
        let input = Basic {
            bln: true,
            flt: 0.001f32,
            dbl: 0.0002f64,
            i32: 1,
            i64: 2,
        };
        let contact_points = match ContactPoints::from_str("127.0.0.1") {
            Result::Ok(val) => val,
            Result::Err(err) => panic!("My error! {}", err),
        };
        let mut cluster = Cluster::default();
        cluster.set_contact_points(contact_points).unwrap();
        cluster.set_load_balance_round_robin();
        match cluster.connect() {
            Ok(ref mut session) => {
                let ks_statement = &stmt!("CREATE KEYSPACE IF NOT EXISTS examples WITH replication = \
                                           { \'class\': \'SimpleStrategy\', \'replication_factor\': \
                                           \'1\' };");
                let table_statement = &stmt!("CREATE TABLE IF NOT EXISTS examples.basic (key text, \
                                              bln boolean, flt float, dbl double, i32 int, i64 \
                                              bigint, PRIMARY KEY (flt));");
                session.execute(ks_statement).wait().unwrap();
                session.execute(table_statement).wait().unwrap();
                insert_into_basic(session, "test", input);
                let output = select_all(session);
                show(&output);
                println!("{:?}", input);
                // println!("{:?}", output);
            }
            err => println!("{:?}", err),
        }
    }
    
    opened by SSC-PuA 0
  • Documentation build on docs.rs fails

    Documentation build on docs.rs fails

    The documentation on https://docs.rs/crate/cassandra/0.8.1 which should cover this crate is currently reporting

    docs.rs failed to build cassandra-0.8.1 Please check build logs and if you believe this is docs.rs' fault, report into this issue report.

    Please can someone knowledgeable investigate and fix?

    opened by kw217 0
  • Can't complete the build of the crate

    Can't complete the build of the crate

    I’m not sure if this is user error or something going on in the crates but I have 18+ errors expecting cassandra::error::Error that all look like:

    = note:  expected type 'std::result::Result<std::vec::Vec<u8>, cassandra::error::Error>' 
    = note:  found type 'std::result::Result<std::vec::Vec<u8>, errors::Error>'
    

    Pretty much all of the errors are looking for cassandra::error:Error. I suspect the error_chain! macro is not modifying the errors quite right. I was curious if you’ve heard about this problem before.

    opened by bkentropy 2
  • compiler plugin to validate CQL statements

    compiler plugin to validate CQL statements

    I've got a partially working CQL parser over here: https://github.com/rustyrazorblade/cql_parser

    One day it might be nice to finish it and get compile time syntax checking of CQL statements

    opened by rustyrazorblade 1
Owner
Tupshin Harper
Tupshin Harper
An ArangoDB driver for Rust

Rincon Rincon is an ArangoDB driver for Rust. It enables low level access to ArangoDB in a typesafe and Rust idiomatic manner. The name Rincon is deri

Innoave 35 Mar 21, 2021
The official MongoDB Rust Driver

MongoDB Rust Driver This repository contains the officially supported MongoDB Rust driver, a client side library that can be used to interact with Mon

mongodb 1.1k Dec 30, 2022
TDS 7.2+ (mssql / Microsoft SQL Server) async driver for rust

Tiberius A native Microsoft SQL Server (TDS) client for Rust. Supported SQL Server versions Version Support level Notes 2019 Tested on CI 2017 Tested

Prisma 189 Dec 25, 2022
Asyncronous Rust Mysql driver based on Tokio.

mysql-async Tokio based asynchronous MySql client library for rust programming language. Installation Library hosted on crates.io. [dependencies] mysq

Anatoly I 292 Dec 30, 2022
Native PostgreSQL driver for the Rust programming language

Rust-Postgres PostgreSQL support for Rust. postgres Documentation A native, synchronous PostgreSQL client. tokio-postgres Documentation A native, asyn

Steven Fackler 2.8k Jan 8, 2023
Official Skytable client driver for Rust

Skytable client Introduction This library is the official client for the free and open-source NoSQL database Skytable. First, go ahead and install Sky

Skytable 29 Nov 24, 2022
cogo rust coroutine database driver (Mysql,Postgres,Sqlite)

cdbc Coroutine Database driver Connectivity.based on cogo High concurrency,based on coroutine No Future<'q,Output=*>,No async fn, No .await , no Poll*

co-rs 10 Nov 13, 2022
This is superseded by the official MongoDB Rust Driver

This Repository is NOT a supported MongoDB product MongoDB Rust Driver Prototype NOTE: This driver is superseded by the official MongoDB Rust driver,

MongoDB, Inc. Labs 382 Nov 15, 2022
This is an Oracle database driver for Rust based on ODPI-C

Rust-oracle This is an Oracle database driver for Rust based on ODPI-C. Change Log See ChangeLog.md. Build-time Requirements C compiler. See Compile-t

Kubo Takehiro 138 Dec 23, 2022
Easy to use rust driver for arangoDB

arangors arangors is an intuitive rust client for ArangoDB, inspired by pyArango. arangors enables you to connect with ArangoDB server, access to data

fMeow 116 Jan 1, 2023
A Rust port of Pimoroni's uc8151 driver

uc8151-rs - a no-std Rust library for the UC8151(IL0373) e-ink display This is a Rust port of the Pimoroni UC8151 library. UC8151 is also sometimes re

null 6 Dec 15, 2022
ENC28J60 Linux network driver written in Rust.

enc28j60rs ENC28J60 Linux ethernet driver written in Rust. Tested with Raspberry Pi 4 Model B + Linux kernel 6.2.8 + Raspberry Pi OS AArch64. Kernel T

Ryo Munakata 11 May 1, 2023
MIPI Display Serial Interface unified driver

mipidsi This crate provides a generic display driver to connect to TFT displays that implement the MIPI DSI. Uses display_interface to talk to the har

Aleš Katona 31 Dec 20, 2022
TTVM Intermediate Representation driver

ttir - TTVM IR Driver ttir is driver for the TTVM IR located in ttvm. Usage Run the following command in your shell: cargo install ttir Features Easy

maDeveloper 1 Nov 2, 2021
e-paper/e-ink monitor linux driver

Ardoise: e-paper/e-ink monitor Goal: Create a e-paper/e-ink monitorfor linux. My personal use is a typewriter. Written in Rust Latency is 0,2s when th

Cyril Jacquet 1 Dec 8, 2022
An unofficial Logitech HID++>2.0 driver based on the original logiops by PixlOne

ruhroh An unofficial Logitech HID++>2.0 driver based on the original logiops by PixlOne Configuration Refer to the docs for details. The default locat

Matthew Wilks 3 Dec 11, 2022
Distributed SQL database in Rust, written as a learning project

toyDB Distributed SQL database in Rust, written as a learning project. Most components are built from scratch, including: Raft-based distributed conse

Erik Grinaker 4.6k Jan 8, 2023
A simple embedded key-value store written in rust as a learning project

A simple embedded key-value store written in rust as a learning project

Blobcode 1 Feb 20, 2022
A template project for building a database-driven microservice in Rust and run it in the WasmEdge sandbox.

Secure & lightweight microservice with a database backend In this repo, we demonstrate a microservice written in Rust, and connected to a MySQL databa

Second State 222 Feb 19, 2023