COMP3007_Modern_Programming_Languages (6)
COMP3007_Modern_Programming_Languages (6)
Fall 2024-2025
7 impl Dog {
8 fn baby_name () -> String {
9 String :: from("Spot")
10 }
11 }
12
19 fn main () {
Dr. Öğr. Üyesi Yusuf Kürşat Tuncel (Department
COMP3007
of Computer
- Modern
Engineering)
Programming Languages Fall 2024-2025 5 / 31
Newtype Pattern
1 fn bar () -> ! {
2 panic !("This call never returns .");
3 }
1 macro_rules ! vec {
2 ( $( $x:expr ) ,* ) => {
3 {
4 let mut temp_vec = Vec :: new ();
5 $(
6 temp_vec .push($x);
7 )*
8 temp_vec
9 }
10 };
11 }
1 use proc_macro ;
2
3 #[ some_attribute ]
4 pub fn some_name (input: TokenStream ) -> TokenStream {
5 }
6 unsafe {
7 println !("r1 is: {}", *r1);
8 *r2 = 10;
9 println !("r2 is: {}", *r2);
10 }
1 enum Message {
2 Hello { id: i32 },
3 }
4
5 let msg = Message :: Hello { id: 5 };
6
7 match msg {
8 Message :: Hello { id: id_variable @ 3..=7 } => {
9 println !("Found an id in range : {}", id_variable )
10 },
11 Message :: Hello { id: 10..=12 } => {
12 println !("Found an id in another range ")
13 },
14 Message :: Hello { id } => {
15 println !("Found some other id: {}", id)
16 },
17 }
5 fn main () {
6 let wrapper = ArrayWrapper { array: [1, 2, 3, 4, 5]
};
7 }
1 trait Container {
2 type Item;
3 fn insert (& mut self , item: Self :: Item);
4 fn remove (& mut self) -> Option <Self ::Item >;
5 }
6
7 fn process <T: Container <Item = i32 >>( container : &mut T) {
8 // Process a container of i32s
9 }
In code:
1 #[ cfg( feature = " console_error_panic_hook ")]
2 use console_error_panic_hook :: set_once as set_panic_hook ;
19 // JavaScript
Dr. Öğr. Üyesi Yusuf Kürşat Tuncel (Department
COMP3007
of Computer
- Modern
Engineering)
Programming Languages Fall 2024-2025 27 / 31
Conclusion