fn main(){
    let a = 123;
    let p = &a;
    println!("{}", *p);
    let b = 456;
    let ref q = &b;
    println!("{}", *q);
    let c = 789;
    let ref r = &c;
    println!("{}", *r);
}
#include <cstdio>
void swap(int &a, int &b)
{
    int temp;;
    temp = a;
    a = b;
    b = temp;
}
void swap_pointer(int *a, int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
int main() {
    int x = 5;
    int y = 8;
    swap(x, y);
    printf("%d, %d\n", x, y);
    swap_pointer(&x, &y);
    printf("%d, %d\n", x, y);
    return(0);
}
これをRustで書こうとするが、、、
fn swap<'a>(mut a: &'a i32,mut b: &'a i32) {
    let mut _temp:&i32;
    _temp = a;
    a = b;
    b = _temp;
}
fn main(){
    let mut x: i32 = 5;
    let mut y: i32 = 8;
    swap(&x, &y);
    println!("x:{} y:{}", x, y);
}
$ ./main
x:5 y:8
swapされんな… 何が間違っているかよくわからん…
 
					 
