元组是否实现了“复制”?

时间:2017-08-23 18:50:13

标签: rust tuples

在Rust Book,第18章中,他们举了一个模式匹配元组的例子。

fn print_coordinates(&(x, y): &(i32, i32)) {
    println!("Current location: ({}, {})", x, y);
}

fn main() {
    let point = (3, 5);
    print_coordinates(&point);   // point passed as reference
}

出于好奇,我试着不经过这样的参考。

fn print_coordinates((x, y): (i32, i32)) {
    println!("Current location: ({}, {})", x, y);
}

fn main() {
    let point = (3, 5);
    print_coordinates(point);   // point passed as value
    print_coordinates(point);   // point is still valid here
}

它编译并打印出2次坐标。

可以像其他原始数据类型(数字,布尔值等)一样将元组传递给函数吗?

1 个答案:

答案 0 :(得分:8)

是;根据{{​​3}},对于12或更小的元组来说,这是正确的:

  

如果元组中的每个类型都实现了以下特征之一,那么元组本身也会实现它。

           

由于Rust类型系统的临时限制,这些特征仅在12或更小的元组上实现。将来,这可能会改变。