[][src]Trait cherries::node::Cherries

pub trait Cherries {
    fn name(&self) -> &String;
fn value(&self) -> Result<f32, String>;
fn symbol(&self) -> String;
fn to_json(&self) -> String; }

Trait for active expression node.

Required methods

fn name(&self) -> &String

fn value(&self) -> Result<f32, String>

fn symbol(&self) -> String

fn to_json(&self) -> String

Loading content...

Implementors

impl<T: Clone + Debug> Cherries for Cherry<T>[src]

fn name(&self) -> &String[src]

Returns reference of node name .

Examples

extern crate cherries;
use cherries::node::{Leaf, Cherries};

fn main() {
    let node = Leaf::new().value(1).name("node").build();
    assert_eq!(node.name(), &"node".to_string());
}

fn value(&self) -> Result<f32, String>[src]

Returns node value or error string.

This method try to parse value from format string for uom support. There should be some other better way (help me, please!).

Examples

extern crate cherries;
use cherries::node::{Leaf, Cherries};
extern crate uom;
use uom::si::{f32::*, length::meter};

fn main() {
    let node = Leaf::new().value(1).name("node").build();
    assert_eq!(node.value(), Ok(1.0));
    let node = Leaf::new().value(Length::new::<meter>(2.0)).name("node").build();
    assert_eq!(node.value(), Ok(2.0));
}

fn symbol(&self) -> String[src]

Returns units symbol.

Returns node qunatity units symbol string (if has quantity) or dimensionless.

Examples

extern crate cherries;
use cherries::node::{Leaf, Cherries};
extern crate uom;
use uom::si::{f32::*, length::meter};

fn main() {
    let node = Leaf::new().value(1).name("node").build();
    assert_eq!(node.symbol(), "dimensionless".to_string());
    let node = Leaf::new().value(Length::new::<meter>(2.0)).name("node").build();
    assert_eq!(node.symbol(), "m^1".to_string());
}

fn to_json(&self) -> String[src]

Returns expression log as json string.

The json has label (string), value (number), units (string), and subexpr (array of object).

Examples

extern crate cherries;
use cherries::node::{Leaf, Cherries};
extern crate uom;
use uom::si::{f32::*, length::meter};

fn main() {
    let x = Leaf::new().value(1.0).name("x").build();
    let y = Leaf::new().value(Length::new::<meter>(2.0)).name("y").build();
    let res = x * y;
    assert_eq!(
        res.to_json(),
        "{\
            \"label\":\"(mul)\",\
            \"value\":2,\
            \"unit\":\"m^1\",\
            \"subexpr\":[\
                {\
                    \"label\":\"x\",\
                    \"value\":1,\
                    \"unit\":\"dimensionless\"\
                },\
                {\
                    \"label\":\"y\",\
                    \"value\":2,\
                    \"unit\":\"m^1\"\
                }\
            ]\
        }".to_string()
    );
}
Loading content...