Simplest Program

fn main() {
	println!("Hello, World!");
}
; void main::main()
_ZN4main4main17h32d243274e2ed5edE proc near

var_30= byte ptr -30h

; __unwind {
sub     rsp, 38h
lea     rdi, [rsp+38h+var_30]
lea     rsi, off_55EA0  ; "Hello, World!\\n"
call    _ZN4core3fmt9Arguments9new_const17h88fe24479bcd08e2E ; core::fmt::Arguments::new_const
lea     rdi, [rsp+38h+var_30]
call    cs:_ZN3std2io5stdio6_print17h9f797bf35880e9ddE_ptr ; std::io::stdio::_print ...
add     rsp, 38h
retn
; } // starts at 7AC0
_ZN4main4main17h32d243274e2ed5edE endp

Generic Data Type

example 1:

fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];

    for item in list {
        if item > largest {
            largest = item;
        }
    }

    largest
}

fn main() {
    let number_list = vec![34, 50, 25, 100, 65];

    let result = largest(&number_list);
    println!("The largest number is {result}");

    let char_list = vec!['y', 'm', 'a', 'q'];

    let result = largest(&char_list);
    println!("The largest char is {result}");
}
// Hidden C++ exception states: #wind=2
__int64 sub_140002010()
{
  __int64 v0; // rax
  __int64 v1; // rdx
  __int64 v2; // rax
  __int64 v3; // rdx
  __int64 v5; // [rsp+40h] [rbp-40h]
  __int64 v6; // [rsp+68h] [rbp-18h]
  _BYTE v7[24]; // [rsp+70h] [rbp-10h] BYREF
  __int64 v8; // [rsp+88h] [rbp+8h] BYREF
  _BYTE v9[48]; // [rsp+90h] [rbp+10h] BYREF
  __int128 v10; // [rsp+C0h] [rbp+40h] BYREF
  __int128 v11; // [rsp+D0h] [rbp+50h] BYREF
  _BYTE v12[24]; // [rsp+E0h] [rbp+60h] BYREF
  __int64 v13; // [rsp+F8h] [rbp+78h] BYREF
  _BYTE v14[48]; // [rsp+100h] [rbp+80h] BYREF
  __int128 v15; // [rsp+130h] [rbp+B0h] BYREF
  __int128 v16; // [rsp+148h] [rbp+C8h] BYREF
  __int64 v17; // [rsp+158h] [rbp+D8h]

  v17 = -2LL;
  v6 = sub_140001810(20LL, 4LL);
  if ( (v6 & 3) != 0 )
    sub_140019ED8(4LL, v6, &off_14001B788);
  *(_DWORD *)v6 = 34;
  *(_DWORD *)(v6 + 4) = 50;
  *(_DWORD *)(v6 + 8) = 25;
  *(_DWORD *)(v6 + 12) = 100;
  *(_DWORD *)(v6 + 16) = 65;
  sub_140001A90(v7, v6, 5LL);
  v0 = sub_140001D50();
  v8 = largest_i32(v0, v1);
  sub_1400010D0((__int64)&v11, (__int64)&v8);
  v10 = v11;
  sub_140001190(v9, &off_14001B7B8, &v10);
  sub_1400059E0((__int64)v9);
  v5 = sub_140001810(16LL, 4LL);
  if ( (v5 & 3) != 0 )
    sub_140019ED8(4LL, v5, &off_14001B7D8);
  *(_DWORD *)v5 = 'y';
  *(_DWORD *)(v5 + 4) = 'm';
  *(_DWORD *)(v5 + 8) = 'a';
  *(_DWORD *)(v5 + 12) = 'q';
  sub_140001A70(v12, v5, 4LL);
  v2 = sub_140001D60(v12);
  v13 = largest_char(v2, v3);
  sub_140001100(&v16, &v13);
  v15 = v16;
  sub_140001190(v14, &off_14001B808, &v15);
  sub_1400059E0((__int64)v14);
  sub_140001410(v12);
  return sub_1400013C0(v7);
}