特征`std :: marker :: Sized`没有为`[u16]`实现

时间:2017-04-13 16:19:31

标签: rust

我有一个函数可以将宽字符串数组转换为[u16]String

fn get_string_from_wide(wide_array: &[u16]) -> Result<String, String> {
    let trimmed_wide = wide_array.iter()
            .position(|char| *char == 0)
            .map(|i| &wide_array[..i]) //<- remove `&` will give the error as the title
            .unwrap_or(wide_array);
    let os_str = OsString::from_wide(trimmed_wide);

    os_str
        .into_string()
        .or(Err("Could not convert `Os_String` to `String`".to_string()))
}

虽然参数是通过引用传递的,但我仍然将类型设为[u16]而不是&[u16]

如果我删除代码编译的&,但我不想传递引用的引用。

var wide_array实际上是数据本身而不是函数参数中所述的引用,因此我还需要使用&引用参考函数调用吗?或者它实际上是对它的引用?

0 个答案:

没有答案