pub trait NodeBuilder<T: Display = Self>: Display {
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;
}
Required Methods
sourcefn with(&mut self, relation_or_node: &str) -> &mut String
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);
sourcefn if_then(
&mut self,
condition: bool,
action: fn(_: &mut Self) -> &mut Self
) -> &mut String
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);