radiate-expr 1.3.1

A Rust library for genetic algorithms and artificial evolution.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::{Expr, ExprNode};
use radiate_error::{RadiateError, radiate_err};

impl TryFrom<Expr> for f32 {
    type Error = RadiateError;

    fn try_from(value: Expr) -> Result<Self, Self::Error> {
        if let ExprNode::Literal(lit) = value.node {
            let extracted = lit.extract::<f32>();
            match extracted {
                Some(val) => Ok(val),
                None => Err(radiate_err!(Expr: "Failed to extract f32 from literal")),
            }
        } else {
            Err(radiate_err!(Expr: "Cannot convert Expr to f32: Expr is not a literal"))
        }
    }
}