Here's a swap
function for two-element tuples:
fn swap<A, B>(obj: (A, B)) -> (B, A)
{
let (a, b) = obj;
(b, a)
}
Example use:
fn main() {
let obj = (10i, 20i);
println!("{}", swap(obj));
}
Is there a way to define swap
as a method on two-element tuples? I.e. so that it may be called like:
(10i, 20i).swap()
Yes, there is. Just define a new trait and implement it immediately, something like this:
trait Swap<U> {
fn swap(self) -> U;
}
impl<A, B> Swap<(B, A)> for (A, B) {
#[inline]
fn swap(self) -> (B, A) {
let (a, b) = self;
(b, a)
}
}
fn main() {
let t = (1u, 2u);
println!("{}", t.swap());
}
Note that in order to use this method you will have to import Swap
trait into every module where you want to call the method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With