gpt4 book ai didi

rust - 是否可以在函数参数中将切片/向量强制转换为 'Cow<[type]>'?

转载 作者:行者123 更新时间:2023-11-29 08:03:54 32 4
gpt4 key购买 nike

移动 API 以使用时 Cow<[sometype]> ,必须更换:

some_func(arg1, arg2, arg3);

与:

some_func(Cow::from(&arg1[..]), Cow::from(&arg2[..]), Cow::from(&arg3[..]));

是相当密集的语法。

有没有一种方法可以将向量或切片强制转换为它们的 Cow作为函数参数传递时的等价物?


可能有充分的理由这样做,例如,如果您多次对函数使用相同的参数,则显式语法提示 Cow<[]> version 应该被分配一个变量并保存。不过,我很想知道这是否可行。

最佳答案

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[..]);
}

Playground

关于rust - 是否可以在函数参数中将切片/向量强制转换为 'Cow<[type]>'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41862596/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com