移动API以使用Cow<[sometype]>
时,必须替换:
some_func(arg1, arg2, arg3);
使用:
some_func(Cow::from(&arg1[..]), Cow::from(&arg2[..]), Cow::from(&arg3[..]));
语法相当密集。
当作为函数参数传递时,是否有一种方法可以将向量或切片强制转换为它们的Cow
等价物?
可能有充分的理由不这样做,例如,如果您多次使用相同的参数到函数,则显式语法提示应分配Cow<[]>
版本变量并保留。但是,我很想知道这是否可行。
答案 0 :(得分:5)
Into
特性就是你想要的。声明函数采用Into<Cow<'a, [T]>>
并在函数中调用into()
方法:
use std::borrow::Cow;
fn foo<'a, T: Into<Cow<'a, [u8]>>>(v: T) {
let x = v.into();
println!("{:?}", x);
}
fn main() {
let v = vec![0,1,2];
let s = &[3,4,5];
foo(v);
foo(&s[..]);
}