< 返回版块

cyh0 发表于 2021-03-24 22:00

fn main() {
    let v = &[1,2,3];

    println!("{:?}",v.get(0));

    // error: doesn't have a size known at compile-time
    // println!("{:?}",v[1..]);

    // 加了&就可以了,我看别人这么用,我不知道为什么,请教下各位,感谢。
    println!("{:?}",&v[1..]);

    /* 自己研究了一下,很多东西我理解错了,
       v是数组的引用(Sized),
       v[1..]类型:[i32](unsized),
       &v[1..]类型:&[i32]也就是i32切片,(sized, fat pointer),
       然后又发现更多需要学习的了,rust太难啦。
    */


}

评论区

写评论
liangyongrui 2021-03-25 09:16

编译器说的很清楚呀 「 error: doesn't have a size known at compile-time」

因为 slice 是 dynamically-sized view

所以要加个引用

1 共 1 条评论, 1 页