Rust如何从数组转换为std :: raw ::: Slice

时间:2014-11-16 18:56:46

标签: rust unsafe

std::raw::Slice定义为:

pub struct Slice<T> {
    pub data: *const T,
    pub len: uint,
}

我正在尝试这样的事情:

use std::raw::Slice as RawSlice;
let a = [1i,2,3,4];
let s : RawSlice<int>= RawSlice{data: a as *const int, 
        len : a.len()};

这不会编译。 error: non-scalar cast: [int, ..4] as *const int。我基本上无法弄清楚如何获得指向数组开头的指针。

类似的问题是:如何从[int]转换为* const int?

1 个答案:

答案 0 :(得分:6)

您可以使用指向数组第一个元素的指针并将其转换为:

&a[0] as *const int