dha*_*ech 7 methods tuples rust
这是swap两元素元组的函数:
fn swap<A, B>(obj: (A, B)) -> (B, A)
{
let (a, b) = obj;
(b, a)
}
Run Code Online (Sandbox Code Playgroud)
使用示例:
fn main() {
let obj = (10i, 20i);
println!("{}", swap(obj));
}
Run Code Online (Sandbox Code Playgroud)
有没有办法swap在两元素元组上定义方法?即它可以被称为:
(10i, 20i).swap()
Run Code Online (Sandbox Code Playgroud)
就在这里.只需定义一个新特征并立即实现它,如下所示:
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());
}
Run Code Online (Sandbox Code Playgroud)
请注意,要使用此方法,您必须将Swaptrait 导入到要调用方法的每个模块中.