struct_to_scheme/enum_proc/
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
11pub const AUTO: u64 = 0;
12
13#[derive(Debug, Serialize, Deserialize)]
14pub enum TestUseEnum 
15{ 
16    Yellow, 
17    Red, 
18    Green, 
19    ColorRgb(u64, u64, u64), 
20    ColorRgbaProfile{ profile_name: String, col_r: u64, col_g: u64, col_b: u64, col_a: u64 }
21}
22
23
24pub fn main()
25{
26    let mut curdir = std::env::current_dir().unwrap();
27    curdir.push("examples/struct_to_scheme/enum_proc/init_use1.shm");
28    println!("{}", curdir.display());
29
30    let lex = lexer::Lexer::from_file(curdir).unwrap();
31    let schm = init::SchemeInit::new().unwrap();
32
33    let res = schm.run(&lex, None).unwrap();
34
35    let resser = res.get("use1").unwrap().clone();
36
37    println!("Static: \n{:?}\n", res);
38
39
40    let mut curdir = std::env::current_dir().unwrap();
41    curdir.push("examples/struct_to_scheme/enum_proc/init_use_dyn1.shm");
42
43    let (_, dynres) = environment::DynEnvironment::from_file(&curdir, resser.clone()).unwrap();
44
45    let ret = serializator::Serialization::serialize(resser.clone(), dynres.clone()).unwrap();
46
47    let serialized = serde_json::to_string(&ret).unwrap();
48
49
50    let n: TestUseEnum = serde_json::from_str(&serialized).unwrap();
51
52    let resser = from_struct(n, resser);
53    
54    println!("result:");
55    if resser.is_err() == true
56    {
57        panic!("{}", resser.err().unwrap());
58    }
59    else
60    {
61        println!("{}", resser.unwrap());
62    }
63}