Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как поменять переменные местами в Rust

Arystan 135 Ученик (40), открыт 2 дня назад
2 ответа
Алекс Куха Высший разум (452384) 2 дня назад
 fn swap(x: i32, y: i32) -> (i32, i32) { return (y, x);} 

fn main() {
let mut a=5; let mut b=6;
let (a, b) = swap(a,b) ;
println!("{} {}", a, b);
}
Максим Оракул (93934) 1 день назад
В другом ответе только тип 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);
}
Похожие вопросы