#sqlite #sql #sorting #naive #knowledge #fun #having

nightly rusql

一个想要成为数据库管理系统的Rust程序

1 个不稳定版本

使用旧的Rust 2015

0.0.1 2014年12月23日

#23#having

130KB
2.5K SLoC

rusql

一个基于SQL的简单关系型数据库管理系统,用Rust编写。

我对这个项目的当前意图是扩展我可怜的SQL知识,同时在Rust中找些乐趣。

(非常松散地)基于SQLite,以SQLite对SQL的理解作为某种规范。

使用rust-peg生成解析器。

示例

直接从 examples/example.rs 中提取

extern crate rusql;

use rusql::{rusql_exec, Rusql};

fn main() {
    let mut db = Rusql::new();

    let sql_str = "CREATE TABLE Foo(Id INTEGER PRIMARY KEY, Name TEXT); \
                   INSERT INTO Foo VALUES(1, \"Bar1\"); \
                   INSERT INTO Foo VALUES(2, \"Bar2\"); \
                   CREATE TABLE Yarp(Id INTEGER PRIMARY KEY, Name TEXT); \
                   INSERT INTO Yarp VALUES(1, \"Yarp1\"); \
                   INSERT INTO Yarp VALUES(2, \"Yarp2\"); \
                   SELECT * FROM Foo, Yarp;";

    rusql_exec(&mut db, sql_str.to_string(), |entry, header| {
        for (column, def) in entry.iter().zip(header.iter()) {
            println!("{}: {}", def.name, column);
        }
    });
}
$ ./target/examples/example 
Id: Integer(1)
Name: Text(Bar1)
Id: Integer(2)
Name: Text(Bar2)
Id: Integer(1)
Name: Text(Yarp1)
Id: Integer(2)
Name: Text(Yarp2)

无运行时依赖