rust_dynamic 0.49.0

Support for dynamically-typed values in run-time
Documentation
#[cfg(test)]
mod tests {
    #![allow(unused_imports)]
    use super::*;
    use rust_dynamic::value::Value;

    #[test]
    fn test_len_list() {
        let v = Value::from(vec![Value::new(), Value::new()]).unwrap();
        assert_eq!(v.len(), 2);
    }
    #[test]
    fn test_len_matrix() {
        let v = Value::from(vec![vec![Value::new(), Value::new()]]).unwrap();
        assert_eq!(v.len(), 2);
    }
    #[test]
    fn test_len_nodata() {
        let v = Value::nodata();
        assert_eq!(v.len(), 0);
    }
    #[test]
    fn test_len_regular() {
        let v = Value::from(42 as i64).unwrap();
        assert_eq!(v.len(), 2);
    }
    #[test]
    fn test_len_lambda() {
        let val = Value::to_lambda(vec![Value::from_int(42)]);
        assert_eq!(val.len(), 1);
    }
    #[test]
    fn test_len_textbuffer() {
        let v = Value::text_buffer("".to_string());
        assert_eq!(v.len(), 0);
    }
    #[test]
    fn test_len_string() {
        let v = Value::from_string("Hello");
        assert_eq!(v.len(), 5);
    }
    #[test]
    fn test_len_float() {
        let v = Value::from_float(3.14);
        assert_eq!(v.len(), 4);
    }
    #[test]
    fn test_len_json_array() {
        let v = Value::json(serde_json::json!([3.14, 42]));
        assert_eq!(v.len(), 2);
    }
    #[test]
    fn test_len_message_type() {
        let v = Value::message(Value::from_string("ABC"), Value::from_string("CDE"), Value::from_string("GHI"));
        assert_eq!(v.len(), 1);
    }
}