Rust 是否可以将切片/向量强制转换为';奶牛<;[类型]>';在函数参数中?
移动API以使用Rust 是否可以将切片/向量强制转换为';奶牛<;[类型]>';在函数参数中?,rust,copy-on-write,Rust,Copy On Write,移动API以使用Cow时,必须更换: some_func(arg1, arg2, arg3); 与: 是相当密集的语法 当作为函数参数传递时,有没有一种方法可以将向量或切片强制转换为它们的Cow等价物 可能有很好的理由不这样做,例如,如果您多次对函数使用相同的参数,那么显式语法就是一个提示,应该为Cow版本分配一个变量并保留该变量。然而,我很想知道这是否可行。这种特质正是你想要的。声明要将带入的函数我想您可能对带入特性感兴趣。然后,您可以在函数中约束泛型类型。注意:这是阴影非常有趣的地方,如
Cow
时,必须更换:
some_func(arg1, arg2, arg3);
与:
是相当密集的语法
当作为函数参数传递时,有没有一种方法可以将向量或切片强制转换为它们的Cow
等价物
可能有很好的理由不这样做,例如,如果您多次对函数使用相同的参数,那么显式语法就是一个提示,应该为
Cow
版本分配一个变量并保留该变量。然而,我很想知道这是否可行。这种特质正是你想要的。声明要将带入的函数我想您可能对带入
特性感兴趣。然后,您可以在函数中约束泛型类型。注意:这是阴影非常有趣的地方,如果您重命名参数x
,那么在阴影之后,您就不能再意外地引用它了。
some_func(Cow::from(&arg1[..]), Cow::from(&arg2[..]), Cow::from(&arg3[..]));
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[..]);
}