rustDatabook/
lib.rs

1mod rdbhandeling;
2//mod rdbhandeling::dataBook;
3
4
5
6
7pub fn rdbData(name:&str) -> dataBook{
8    return returner(name);
9}
10pub fn findValue(name: &str, xs: &dataBook,typ: &str) -> usize{
11    return findValueB(name, xs, typ)
12}
13pub fn addData(name:&str,newdata:&str){
14    rdbhandeling::addData(name, newdata)
15}
16pub fn changeData(name:&str,newdata:&str,cname:&str){
17    rdbhandeling::changeData(name, newdata,cname)
18}
19pub fn removeData(name:&str,newdata:&str){
20    rdbhandeling::removeData(name, newdata)
21}
22pub struct dataBook{
23    pub NM:Vec<String>,
24    pub ND:Vec<String>,
25    pub D:Vec<i64>,
26    pub M:Vec<String>,
27    pub A:Vec<Vec<String>>,
28    pub AN:Vec<String>
29}
30
31 fn returner(name: &str) -> dataBook{
32    
33    let  XX:dataBook = dataBook{
34        NM : rdbhandeling::getVal_MN(name),
35        ND : rdbhandeling::getVal_ND(name),
36        D : rdbhandeling::getVal_D(name),
37        M : rdbhandeling::getVal_M(name),
38        A : rdbhandeling::getVal_A(name),
39        AN: rdbhandeling::getVal_AN(name)
40        
41    
42    };
43    return XX;
44}
45fn findValueB(name: &str, xs: &dataBook,typ: &str) -> usize{
46    // the if type checks what type and it then goes on to finding the dataname
47    if typ == "_D"{
48        for x in 0..xs.ND.len(){
49            if xs.ND[x] == name.to_string(){
50                return x;
51            } 
52        }
53    }else if typ == "_M"{
54        for x in 0..xs.NM.len(){
55            if xs.NM[x] == name.to_string(){
56                return x;
57            } 
58        }
59    }else if typ == "_A"{
60        for x in 0..xs.AN.len(){
61            if xs.AN[x] == name.to_string(){
62                return x;
63            } 
64        }
65    }
66    
67    return 0;
68}
69pub fn copyValueToNew(name:&str,newName:&str, copyName:&str,xx: dataBook,typ:&str){
70    let mut x: String = "".to_string();
71    if typ == "_M"{
72        
73        x = "|".to_owned()+&newName+&"_M|".to_owned()+&xx.M[findValue(copyName, &xx, "_M")];
74
75    }
76    if typ == "_D"{
77        
78        x = "|".to_owned()+&newName+&"_D|".to_owned()+&xx.D[findValue(copyName, &xx, "_D")].to_string();
79
80    }
81    if typ == "_A"{
82        let mut xf: String = "".to_string();
83
84        for x in &xx.A[findValue(copyName, &xx, "_A")]{
85            let xo = x.to_owned()+",";
86            xf.push_str(&xo);
87        }
88        x = "|".to_owned()+&newName+&"_A|".to_owned()+&xf;
89
90    }
91    rdbhandeling::addData(name, &x)
92}