我希望能够创建一个新向量 c: Vec<T>
来自a: Vec<T>
和b: T
哪里c
等于b
附加到a
,不使用可变变量。假设我有这个代码-
fn concat_vec<T>(a: Vec<T>, b: T) -> Vec<T> {
return Vec::<T>::new(a, b);
}
我知道这不起作用,因为 Vec::new()
没有输入参数。我想知道 std::vec
中是否有函数或宏可以从另一个向量初始化一个向量,并附加一组附加值到该向量上。我知道可以很容易地创建一个函数来做到这一点,我只是想知道标准库中是否存在用于处理向量的功能,而它们一开始就不可变。
最佳答案
请注意,您可以使用 tap
crate 将 b
推送到计算结果为 a
的表达式中的 a
>:
use tap::Tap;
fn concat_vec<T>(a: Vec<T>, b: T) -> Vec<T> {
a.tap_mut(|a| a.push(b))
}
这结合了 push()
的性能优势(与构建全新的向量相比)和简短表达式的优雅。
关于rust - 从向量 Vec<T> 和数据 T 创建新的 Vec<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73431246/