Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法编写一个泛型函数,通过rust中的数组扩展实体?_Rust - Fatal编程技术网

有没有办法编写一个泛型函数,通过rust中的数组扩展实体?

有没有办法编写一个泛型函数,通过rust中的数组扩展实体?,rust,Rust,我的目标是编写一个如下所示的函数: [德里维克隆] 结构Q{} fn扩展函数输出:&mut A{ 设p=Q{}; 向外扩展&[p]; } Vec impls Extend,因此我可以编写以下代码: fn扩展函数输出(&mut Vec){ 设p=Q{}; out.extendvec![p].into_iter; } 或 [衍生拷贝,克隆] 结构Q{} fn扩展函数输出(&mut Vec){ 设p=Q{}; 向外扩展&[p]; } 尽管在这里,我也有一个小问题:要么Q必须是复制的,要么我必须将它粘贴

我的目标是编写一个如下所示的函数:

[德里维克隆] 结构Q{} fn扩展函数输出:&mut A{ 设p=Q{}; 向外扩展&[p]; } Vec impls Extend,因此我可以编写以下代码:

fn扩展函数输出(&mut Vec){ 设p=Q{}; out.extendvec![p].into_iter; } 或

[衍生拷贝,克隆] 结构Q{} fn扩展函数输出(&mut Vec){ 设p=Q{}; 向外扩展&[p]; } 尽管在这里,我也有一个小问题:要么Q必须是复制的,要么我必须将它粘贴到vec中

但是,当我尝试将其泛化时,唯一能使其工作的方法是使我的代码如下所示:

[衍生拷贝,克隆] 结构Q{} fn扩展函数输出:&mut A{ 设p=Q{}; out.extendvec![p].into_iter; } 在这里,我必须使用vec并复制Q

问题是:

Q必须是副本。即使我试过了。extendvec![Q{}].被克隆到\u iter.cloned;,我得到一个语法错误。 我必须把它放进一个vec。有没有从静态数组扩展的方法? Extend特性允许您传入实现IntoIterator的任何类型,包括任何迭代器

对于单个值,最简单的迭代器是value,它将只生成该值一次。它还将像Vec::一样将值移动到\u iter中,因此不需要复制或克隆类型。因此,使用单个值进行扩展的最简单方法是:

[德里维克隆] 结构Q{} fn扩展函数输出:&mut A{ 设p=Q{}; out.extenstd::iter::oncep; }
谢谢,但是我怎样才能将数组转换成迭代器呢?这是不可能的,因为数组确实实现了IntoIterator特性,就像Vec一样。因此,如果您需要像示例中那样扩展一个值,std::iter::once可能是最好的,否则,如果您还没有迭代器,您可以使用它,只使用Vec可能是最简单的。