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 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}