struct_to_scheme/vector_arg/
struct2scheme.rs

1use std::ops::{RangeInclusive, Range};
2
3use serde::{Serialize, Deserialize};
4use shm_rs::lexer::lexer;
5use shm_rs::scheme_composer::composer::from_struct;
6use shm_rs::serializator::serializator;
7
8use shm_rs::static_scheme::init;
9use shm_rs::dynamic_scheme::environment;
10
11
12#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
13pub struct LdActionExec
14{
15    pub executable: String,
16}
17
18#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
19pub struct CommonLevels
20{
21    pub lvl_a: Vec<Range<i64>>,
22    pub lvl_b: Vec<RangeInclusive<i64>>,
23    pub action_block: Option<Vec<LdActionExec>>,
24    pub action_unblock: Option<Vec<LdActionExec>>,
25}
26
27
28pub fn main()
29{
30    let mut curdir = std::env::current_dir().unwrap();
31    curdir.push("examples/struct_to_scheme/vector_arg/test_vec1.shm");
32    println!("{}", curdir.display());
33
34    let lex = lexer::Lexer::from_file(curdir).unwrap();
35    let schm = init::SchemeInit::new().unwrap();
36
37    let res = schm.run(&lex, None).unwrap();
38
39    let resser = res.get("test10").unwrap().clone();
40
41    println!("Static: \n{:?}\n", res);
42
43
44    let mut curdir = std::env::current_dir().unwrap();
45    curdir.push("examples/struct_to_scheme/vector_arg/test_vec1_data.shm");
46
47
48    let (_, dynres) = environment::DynEnvironment::from_file(&curdir, resser.clone()).unwrap();
49
50    let ret = serializator::Serialization::serialize(resser.clone(), dynres.clone()).unwrap();
51
52    let serialized = serde_json::to_string(&ret).unwrap();
53
54
55    let n: CommonLevels = serde_json::from_str(&serialized).unwrap();
56
57    let resreser = from_struct(n, resser);
58    
59    if resreser.is_err() == true
60    {
61        panic!("{}", resreser.err().unwrap());
62    }
63    else
64    {
65        println!("{}", resreser.unwrap());
66    }
67}