struct_to_scheme/advanced_arg/
struct2scheme.rs1
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)]
28pub struct Level3
29{
30 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 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}