我有src: Vec<Foo>
和dst: &mut [Foo]
。我想将尽可能多的元素从src
移到 中dst
。具体来说:
- 如果
src
短于dst
,则应将的开头dst
替换为中的内容src
(其余部分保持dst
原样),并且src
最终应为空。 - 如果
src
和的dst
长度相同,则中的所有值dst
都应替换为中的值src
,并且src
最终应为空。 - 如果
src
长于dst
,则应将 中的所有值dst
替换为 开头的值src
,并且src
只留下不适合的元素。
例如假装Foo
是i32
(但它也适用于非Copy
类型):
- 如果
src
以 开始[1,2]
且dst
以 开始[7,8,9,10]
,src
则应该以 结束[]
且dst
应该以 结束[1,2,9,10]
。 - 如果
src
以 开始[1,2,3,4]
且dst
以 开始[7,8,9,10]
,src
则应该以 结束[]
且dst
应该以 结束[1,2,3,4]
。 - 如果
src
以 开始[1,2,3,4,5,6]
且dst
以 开始[7,8,9,10]
,src
则应该以 结束[5,6]
且dst
应该以 结束[1,2,3,4]
。
我知道我可以手动循环并一次移动一个元素,但似乎应该采用Drain
类似方法。