For loop 循环中的元组分解?

For loop 循环中的元组分解?,for-loop,rust,reference,tuples,For Loop,Rust,Reference,Tuples,编译并输出:i32 fn打印类型(&T){ println!(“{}”,std::any::type_name::()) } pub fn main(){ 让区域=[ //从0xe0000到0xfffff (0xe0000,0xfffff), ]; 对于区域中的(开始、结束)(&R){ 打印类型(开始); } } 这失败了 fn打印类型(&T){ println!(“{}”,std::any::type_name::()) } pub fn main(){ 让区域=[ //从0xe0000到0

编译并输出:
i32

fn打印类型(&T){
println!(“{}”,std::any::type_name::())
}
pub fn main(){
让区域=[
//从0xe0000到0xfffff
(0xe0000,0xfffff),
];
对于区域中的(开始、结束)(&R){
打印类型(开始);
}
}
这失败了

fn打印类型(&T){
println!(“{}”,std::any::type_name::())
}
pub fn main(){
让区域=[
//从0xe0000到0xfffff
(0xe0000,0xfffff),
];
//新的
对于区域中的(&(开始,结束)&){
打印类型(开始);
}
}


错误[E0308]:类型不匹配
-->考试时间:12:27
|
12 |打印类型|(开始);
|                           ^^^^^
|                           |
|应为引用,找到整数
帮助:考虑在这里借用:“开始”
|
=注:预期参考`&_`
找到类型`{integer}`
为什么®ions中的&(开始、结束)

捕获
start
end
作为int值 但是,®ions中的(开始、结束)
作为参考

fn print_type_of<T>(_: &T) {
    println!("{}", std::any::type_name::<T>())
}

pub fn main() {
    let &a = &32_i32;
    let b = 32_i32;
    print_type_of(&a);
    print_type_of(&b);
}
在本例中,
&a=&32_i32
相当于
b=32_i32
。左值中的
&
将成为右值的解引用,这是。您的代码相当于:

fn print_type_of<T>(_: &T) {
    println!("{}", std::any::type_name::<T>())
}

pub fn main() {
    let regions = [
        // From 0xe0000 to 0xfffff
        (0xe0000, 0xfffff)
    ];

    // NEW
    for (start, end) in regions {
        print_type_of(start);
    }
}
fn打印类型(&T){
println!(“{}”,std::any::type_name::())
}
pub fn main(){
让区域=[
//从0xe0000到0xfffff
(0xe0000,0xfffff)
];
//新的
用于区域中的(开始、结束){
打印类型(开始);
}
}

所以
(start,end)=(0xe0000,0xfffff)
start
的类型是
i32

再次阅读我的问题@Stargateur-ahh不太相似,但不同。也很有帮助:“引用模式解除对匹配指针的引用,从而借用它们。”
fn print_type_of<T>(_: &T) {
    println!("{}", std::any::type_name::<T>())
}

pub fn main() {
    let regions = [
        // From 0xe0000 to 0xfffff
        (0xe0000, 0xfffff)
    ];

    // NEW
    for (start, end) in regions {
        print_type_of(start);
    }
}