mmalmi / rod

non-wasm rust port of gun
MIT License
107 stars 14 forks source link

Rod

Rust Object Database.

The decentralized social networking application Iris-messenger syncs over Rod peers by default.

Use

Install Rust first.

Install & run

cargo install rod
rod start

Library

use rod::{Node, Config, Value};
use rod::adapters::*;

#[tokio::main]
async fn main() {
    let config = Config::default();
    let ws_client = OutgoingWebsocketManager::new(
        config.clone(),
        vec!["ws://localhost:4944/ws".to_string()],
    );
    let mut db = Node::new_with_config(config.clone(), vec![], vec![Box::new(ws_client)]);

    let mut sub = db.get("greeting").on();
    db.get("greeting").put("Hello World!".into());
    if let Value::Text(str) = sub.recv().await.unwrap() {
        assert_eq!(&str, "Hello World!");
        println!("{}", &str);
    }
    db.stop();
}

Status

15/5/2022:

Issues

Develop

cargo install cargo-watch
RUST_LOG=debug cargo watch -x 'run -- start'
cargo test

Watch for code changes and re-run tests that contain the word "stats":

RUST_LOG=debug cargo watch -x 'test stats'
cargo bench

Run on Heroku

heroku create --buildpack emk/rust
git push heroku master

or:

Deploy