-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstructs.rs
More file actions
65 lines (51 loc) · 1.3 KB
/
structs.rs
File metadata and controls
65 lines (51 loc) · 1.3 KB
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
// Structs - Used to create custom data types
// Traditional Struct
// struct Color {
// red: u8,
// green: u8,
// blue: u8,
// }
// Tuple Struct
// struct Color(u8, u8, u8);
struct Person {
first_name: String,
last_name: String,
}
impl Person {
// Construct person
fn new(first: &str, last: &str) -> Person {
Person {
first_name: first.to_string(),
last_name: last.to_string(),
}
}
// Get full name
fn full_name(&self) -> String {
format!("{} {}", self.first_name, self.last_name)
}
// Set last name
fn set_last_name(&mut self, last: &str) {
self.last_name = last.to_string();
}
// Name to tuple
fn to_tuple(self) -> (String, String) {
(self.first_name, self.last_name)
}
}
pub fn run() {
// let mut c = Color {
// red: 255,
// green: 0,
// blue: 0,
// };
// c.red = 200;
// println!("Color: {} {} {}", c.red, c.green, c.blue);
// let mut c = Color(255, 0, 0);
// c.0 = 200;
// println!("Color: {} {} {}", c.0, c.1, c.2);
let mut p = Person::new("Mary", "Doe");
println!("Person {}", p.full_name());
p.set_last_name("Williams");
println!("Person {}", p.full_name());
println!("Person Tuple {:?}", p.to_tuple());
}