struct_to_scheme/vector_arg/
struct2scheme.rs1use 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}