libruster 1.1.1

Ruster is a library using ffi for database management with psql/pg_dump + mysql/mysqldump that can be used in other languages like Golang
Documentation

ruster

MIT licensed Continuous integration Rust Reference

Ruster is a library using ffi for database management with psql/pg_dump + mysql/mysqldump written in Rust.

The generated C static and shared libraries can be reused in other languages (Golang for example).

Build ruster

The build of project produces 2 go binaries, 1 static library (libruster.a) and 1 shared library (libruster.so).

The headers of C functions are in lib/ruster.h and must be present before code generation.

make build-shared

make build-static

Using ruster

/*                                             
#cgo LDFLAGS: -L./lib -lruster                 
#include "./lib/ruster.h"                      
*/                                             
import "C"                                     

func main() {                                   
    os.Getenv("PGPASSWORD")                   
    err := func() error {                     
            C.pg_dump_database(               
    		C.CString("localhost"),           
    		C.CString("5432"),                
    		C.CString("postgres"),            
    		C.CString("postgres"),            
    		C.CString("pg_dump.sql"),         
    		C.CString("true"),                
    		);                                
    		return nil                        
    }                                         
    if err() == nil {                         
        func() {                              
            C.psql_restore_database(          
        	C.CString("localhost"),           
        	C.CString("5432"),                
        	C.CString("postgres"),            
        	C.CString("postgres"),            
        	C.CString("pg_dump.sql"),         
        	C.CString("true"),                
            );                                
        }()                                   
    }                                         
}

Run ruster examples

make run-shared

make run-static

Bench

./time main_shared

./time main_static

Tests

./time test-rust-lib