rust_dynamic/
conv_inner.rs1use crate::types::*;
2use crate::value::Value;
3
4
5impl Value {
6 pub fn conv_inner(&self, t: u16) -> Result<Self, Box<dyn std::error::Error>> {
7 match &self.data {
8 Val::Matrix(m_val) => {
9 let mut res: Vec<Vec<Value>> = Vec::new();
10 for r in m_val {
11 let mut row: Vec<Value> = Vec::new();
12 for v in r {
13 match v.conv(t) {
14 Ok(value) => {
15 row.push(value);
16 }
17 Err(err) => {
18 return Err(format!("Can not convert element of matrix row: {}", err).into());
19 }
20 }
21 }
22 res.push(row);
23 }
24 return Result::Ok(Value::from_matrix(res));
25 }
26 Val::List(l_val) => {
27 let mut res: Vec<Value> = Vec::new();
28 for v in l_val {
29 match v.conv(t) {
30 Ok(value) => {
31 res.push(value);
32 }
33 Err(err) => {
34 return Err(format!("Can not convert element of list: {}", err).into());
35 }
36 }
37 }
38 return Result::Ok(Value::from_list(res));
39 }
40 _ => {
41 return self.conv(t);
42 }
43 }
44 }
45}