如何将静态数组转换为动态数组?

时间:2015-07-02 04:41:38

标签: arrays rust

struct Foo(i32);

fn print_foo(xs: &[Foo]){
    for i in xs{
        println!("{}", i.0);
    }
}

fn main() {
    let xs = [Foo(1), Foo(2), Foo(3)];
    // need do something in this line to conert xs to &[Foo]
    print_foo(xs); // error: expected &[Foo] but found [Foo; 3]

}

变量xs需要转换为&[Foo],但搜索没有给出正确答案。

2 个答案:

答案 0 :(得分:3)

如果你引用它(&xs),你会得到&[Foo; 3]类型的东西,它可以自由地强制转换为动态大小的切片&[Foo]

答案 1 :(得分:0)

print_foo(&xs);

顺便说一下,&[Foo]不是动态数组;它是切片。切片是数组的视图。