darwen 1.3.0

A relational algebra library for Rust
Documentation
//! Demonstrates how to filter a relation with the `RESTRICT` operation.

use darwen::prelude::{Predicate, Relation, RelationBuilder, Scalar, ScalarType};
use darwen::{heading, tuple, AttributeName, Expression};

fn users() -> Relation {
    RelationBuilder::new()
        .with_heading(heading!(name = ScalarType::String, age = ScalarType::Integer).unwrap())
        .with_body(vec![
            tuple!(name = "Monica", age = 18).unwrap(),
            tuple!(name = "Erica", age = 19).unwrap(),
            tuple!(name = "Rita", age = 20).unwrap(),
            tuple!(name = "Tina", age = 21).unwrap(),
            tuple!(name = "Sandra", age = 22).unwrap(),
            tuple!(name = "Mary", age = 23).unwrap(),
            tuple!(name = "Jessica", age = 18).unwrap(),
        ])
        .build()
        .unwrap()
}

fn main() {
    let users = users();

    println!(
        "{}",
        users
            .restrict(&Predicate::gt(
                Expression::Attribute(AttributeName::from("age")),
                Expression::Const(Scalar::Integer(20))
            ))
            .unwrap()
    )
}