我有一个函数可以将宽字符串数组转换为[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
实际上是数据本身而不是函数参数中所述的引用,因此我还需要使用&
引用参考函数调用吗?或者它实际上是对它的引用?