iki değer kopyalama olmadan takas edilebilir NasılDeğerler, aynı türden iki tane değiştirilebilen konumdan birinde, yeniden başlatılmadan veya kopyalanmadan değiştirilir. (offical Rust doc itibaren)std :: mem :: swap nasıl çalışır?
use std::mem; let x = &mut 5; let y = &mut 42; mem::swap(x, y); assert_eq!(42, *x); assert_eq!(5, *y);
? 42
değeri, y
'dan x
'a nasıl geçti? Bu mümkün olmamalıydı.
Sana [üçlü xor hile] duymadım bahis (https: // tr .wikipedia.org/wiki/XOR_swap_algorithm), kodlama görüşmelerinde popüler bir trivia. Standart kütüphanenin bu şekilde uygulayıp uygulamadığından emin değil misiniz? – vincentleest
Montaj günlerinde, birkaç XOR ifadesinin veri kopyalamak için üçüncü bir bellek alanı olmadan verileri değiştirebileceğini hatırlıyorum. Ancak "swap" ın kullandığı şeyin bu olduğundan emin değilim. belki meclisi görebilirsin? https://en.wikipedia.org/wiki/XOR_swap_algorithm – Sunsetquest
Evet, zaten duydum :) – Kapichu