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§
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);
Sourcefn greater_than(&mut self, value: &str) -> &mut String
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);
Sourcefn plus_equal(&mut self, value: &str) -> &mut String
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.