В другом ответе только тип i32 меняет :(
Сделаем универсально
fn main() {
let a = 5; let b = "Апельсин";
let (b, a) = (a, b);
println!("{} {}", a, b);
}
Или так
fn swap<'a, T, N> (a: &'a T, b: &'a N) -> (&'a N, &'a T) {
(b, a)
}
fn main() {
let a = 5; let b = "Апельсин";
let (a, b) = swap(&a, &b);
println!("{} {}", a, b);
}
МаксимОракул (93934)
1 день назад
И ещё вариантик, тут уже значения переменных реально меняются местами, а до это создавались новые переменные.
fn swap (a: & mut T, b: & mut T) {
let c = a.clone();
*a = b.clone();
*b = c;
}
fn main() {
let mut a = "Первый"; let mut b = "Второй";
swap(&mut a, &mut b);
println!("{} {}", a, b);
}