struct_to_scheme/advanced_arg/
struct2scheme.rs

1
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(Clone, Debug, Serialize, Deserialize)]
13pub struct Level3 
14{ 
15    pub lvl3_name: String,
16    pub lvl3_len: i64
17}
18
19
20#[derive(Clone, Debug, Serialize, Deserialize)]
21pub struct Network 
22{ 
23    pub lvl_names: Vec<String>,
24    pub levels: Vec<Level3>
25}*/
26
27#[derive(Clone, Debug, Serialize, Deserialize)]
28pub struct Level3 
29{ 
30    //pub lvl3_name: String,
31    pub lvl3_len: i64
32}
33
34
35#[derive(Clone, Debug, Serialize, Deserialize)]
36pub struct Network 
37{ 
38    pub lvl_tag: String,
39    pub lvl_names: Vec<String>,
40    pub levels: Vec<Level3>
41}
42
43pub fn main()
44{
45    let mut curdir = std::env::current_dir().unwrap();
46    curdir.push("examples/struct_to_scheme/advanced_arg/init_shm_2.shm");
47    println!("{}", curdir.display());
48
49    let lex = lexer::Lexer::from_file(curdir).unwrap();
50    let schm = init::SchemeInit::new().unwrap();
51
52    let res = schm.run(&lex, None).unwrap();
53
54    let resser = res.get("levels").unwrap().clone();
55
56    println!("Static: \n{:?}\n", res);
57
58
59    let mut curdir = std::env::current_dir().unwrap();
60    curdir.push("examples/struct_to_scheme/advanced_arg/data_shm_2.shm");
61
62    let (_, dynres) = environment::DynEnvironment::from_file(curdir, resser.clone()).unwrap();
63
64    let ret = serializator::Serialization::serialize(resser.clone(), dynres.clone()).unwrap();
65
66    let serialized = serde_json::to_string(&ret).unwrap();
67
68   /* let mut rc = RustCode::new(&["Clone", "Debug", "Serialize", "Deserialize"], &["Clone", "Debug", "Serialize", "Deserialize"]);
69    println!("Structures: ");
70    match resser.generate_rust_structs(&mut rc)
71    {
72        Ok(_) => 
73        {
74            println!("{}", rc);
75        },
76        Err(e) => 
77        {
78            println!("{}", e);
79        }
80    }*/
81
82    let n: Network = serde_json::from_str(&serialized).unwrap();
83
84    let resser = from_struct(n, resser);
85    
86    if resser.is_err() == true
87    {
88        panic!("{}", resser.err().unwrap());
89    }
90    else
91    {
92        println!("{}", resser.unwrap());
93    }
94}