Function meval::de::as_f64 [] [src]

pub fn as_f64<D: Deserializer>(deserializer: D) -> Result<f64, D::Error>

Deserialize into Expr and then evaluate using Expr::eval.

Example

#[macro_use]
extern crate serde_derive;
extern crate toml;
extern crate meval;
use meval::{Expr, Context};

#[derive(Deserialize)]
struct Foo {
    #[serde(deserialize_with = "meval::de::as_f64")]
    x: f64,
}

fn main() {
    let foo: Foo = toml::from_str(r#" x = "cos(1.)" "#).unwrap();
    assert_eq!(foo.x, 1f64.cos());

    let foo: Result<Foo, _> = toml::from_str(r#" x = "cos(x)" "#);
    assert!(foo.is_err());
}

See crate root for another example.