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 schm = init::SchemeInit::new_with_path("examples/struct_to_scheme/vector_arg").unwrap();
35
36 let res = schm.run_from_file("test_vec1.shm", None).unwrap();
37
38 let resser = res.get("test10").unwrap().clone();
39
40 println!("Static: \n{:?}\n", res);
41
42
43 let mut curdir = std::env::current_dir().unwrap();
44 curdir.push("examples/struct_to_scheme/vector_arg/test_vec1_data.shm");
45
46
47 let (_, dynres) = environment::DynEnvironment::from_file(&curdir, resser.clone()).unwrap();
48
49 let ret = serializator::Serialization::serialize(resser.clone(), dynres.clone()).unwrap();
50
51 let serialized = serde_json::to_string(&ret).unwrap();
52
53
54 let n: CommonLevels = serde_json::from_str(&serialized).unwrap();
55
56 let resreser = from_struct(n, resser);
57
58 if resreser.is_err() == true
59 {
60 panic!("{}", resreser.err().unwrap());
61 }
62 else
63 {
64 println!("{}", resreser.unwrap());
65 }
66}