-
Notifications
You must be signed in to change notification settings - Fork 0
/
slStru.rs
130 lines (116 loc) · 2.46 KB
/
slStru.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Slice ad Strucs
fn slice_con() {
let n1 = "I am Learning Rust".to_string();
println!("String is {}", n1.len());
let c = &n1[0..5];
println!("Slice is :: {}", c);
}
// can also mutat slice
fn use_slice(data: &mut [i32]) {
println!("Length of slice is {}", data.len());
println!("{:?}", data);
data[0] = 1080;
}
fn mut_slice() {
let mut data = [1, 2, 3, 4, 5];
use_slice(&mut data);
println!("{:?}", data);
}
// sructs
struct Employ {
name: String,
age: i32,
salary: f32,
}
// let mut Student { //
// name: String::from("USA"),
// class: 20,
// place: 10000.0,
// }
// return stru from a fucnction
fn create_employ() -> Employ {
Employ {
name: String::from("Rust"),
age: 20,
salary: 10000.0,
}
}
// conpare
fn compare(em: Employ, em1: Employ) -> Employ {
if em.age == em1.age {
// println!("Both are same");
return em;
} else {
// println!("Both are not same");
return em1;
}
}
fn display(emp: Employ) {
println!("Name is {}", emp.name);
println!("Age is {}", emp.age);
println!("Salary is {}", emp.salary);
}
fn struc_rust() {
let emp1 = Employ {
name: "Hamza".to_string(),
age: 20,
salary: 10000.0,
};
println!(
"Name is {} age {} salary {}",
emp1.name, emp1.age, emp1.salary
);
let emp2 = create_employ();
println!(
"Name is {} age {} salary {}",
emp2.name, emp2.age, emp2.salary
);
let mut emp3 = create_employ();
emp3.name = "Kubra".to_string();
println!(
"Name is {} age {} salary {}",
emp3.name, emp3.age, emp3.salary
);
let elder = compare(emp1, emp2);
display(elder);
}
// adding methods to struc
struct Rectangle {
width: i32,
height: i32,
}
impl Rectangle {
fn area(&self) -> i32 {
self.width * self.height
}
}
// static methods
struct Poinst {
x: i32,
y: i32,
z: i32,
}
impl Poinst {
fn get_point(x: i32 , y: i32 , z: i32) -> Poinst {
Poinst {
x: x,
y: y,
z: z,
}
}
fn display (&self) {
println!("X = {} Y = {} Z = {}", self.x, self.y, self.z);
}
}
fn main() {
slice_con();
mut_slice();
struc_rust();
let rect = Rectangle {
width: 10,
height: 20,
};
println!("Area is {}", rect.area());
let pot = Poinst::get_point(10, 20, 30);
pot.display();
}