Trait NodeBuilder

Source
pub trait NodeBuilder<T: Display = Self>: Display {
    // Required methods
    fn with(&mut self, relation_or_node: &str) -> &mut String;
    fn if_then(
        &mut self,
        condition: bool,
        action: fn(&mut Self) -> &mut Self,
    ) -> &mut String;
    fn greater_than(&mut self, value: &str) -> &mut String;
    fn plus_equal(&mut self, value: &str) -> &mut String;
}

Required Methods§

Source

fn with(&mut self, relation_or_node: &str) -> &mut String

Draws the start of a relation ->node

§Example
use surreal_simple_querybuilder::prelude::*;

let s = "user".with("project");

assert_eq!("user->project", s);
Source

fn if_then( &mut self, condition: bool, action: fn(&mut Self) -> &mut Self, ) -> &mut String

Allows you to pass a lambda that should mutate the current string when the passed condition is true. If condition is false then the action lambda is ignored and the string stays intact.

§Example
use surreal_simple_querybuilder::prelude::*;

// demonstrate how the given closure is ignored if the condition is `false`
let mut label = "John".as_named_label("User");
let intact = &mut label
  .if_then(false, |s| s.with("LOVES").with("User"))
  .with("FRIEND")
  .with("User");

assert_eq!("User:John->FRIEND->User", *intact);

// demonstrate how the given closure is executed if the condition is `true`
let mut label = "John".as_named_label("User");
let modified = &mut label
  .if_then(true, |s| s.with("LOVES").with("User"))
  .with("FRIEND")
  .with("User");

assert_eq!("User:John->LOVES->User->FRIEND->User", *modified);
Source

fn greater_than(&mut self, value: &str) -> &mut String

Take the current string add add > value after it

§Example
use surreal_simple_querybuilder::prelude::*;

let s = "account".greater_than("5");

assert_eq!("account > 5", s);
Source

fn plus_equal(&mut self, value: &str) -> &mut String

Take the current string and add += value after it

§Example
use surreal_simple_querybuilder::prelude::*;

let s = "friends".plus_equal("account:john");

assert_eq!("friends += account:john", s);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl NodeBuilder for String

Source§

fn with(&mut self, node: &str) -> &mut String

Source§

fn if_then( &mut self, condition: bool, action: fn(&mut Self) -> &mut Self, ) -> &mut String

Source§

fn greater_than(&mut self, value: &str) -> &mut String

Source§

fn plus_equal(&mut self, value: &str) -> &mut String

Implementors§