Rust 您如何轻松地借用Vec<;Vec<;T>&燃气轮机;作为a&;[&;[T]]?
如何轻松地借用向量向量作为切片Rust 您如何轻松地借用Vec<;Vec<;T>&燃气轮机;作为a&;[&;[T]]?,rust,Rust,如何轻松地借用向量向量作为切片 fn use_slice_of_slices<T>(slice_of_slices: &[&[T]]) { // Do something... } fn main() { let vec_of_vec = vec![vec![0]; 10]; use_slice_of_slices(&vec_of_vec); } 外向量会被借用成一个切片,所有的都会起作用。但是,如果只是为了争论,我想借用它作为一个
fn use_slice_of_slices<T>(slice_of_slices: &[&[T]]) {
// Do something...
}
fn main() {
let vec_of_vec = vec![vec![0]; 10];
use_slice_of_slices(&vec_of_vec);
}
外向量会被借用成一个切片,所有的都会起作用。但是,如果只是为了争论,我想借用它作为一个切片呢
fn use_slice_of_slices<T>(slice_of_slices: &[&[T]]) {
// Do something...
}
fn main() {
let vec_of_vec = vec![vec![0]; 10];
use_slice_of_slices(&vec_of_vec);
}
假设从&Vec
自动强制到&[&[T]
是不可能的,那么我如何定义一个函数借用&u Vec
fn borrow_vec_of_vec<'a, T: 'a>(vec_of_vec: Vec<Vec<T>>) -> &'a [&'a [T]] {
// Borrow vec_of_vec...
}
fn借用vec中的vec(vec中的vec:vec)->&'a[&'a[T]]{
//借一本一本的。。。
}
换言之,我如何为
Vec
实现借用?您不能
根据定义,切片是现有元素集合上的视图。它不能凭空想象出新的元素,或现有元素的新视图
这源于这样一个事实,即Rust通用参数通常是不变量。也就是说,虽然&Vec
可以转换为&T]
格式,但这两个表达式中的T
必须匹配
一个可能的解决办法是自己去做
use std::fmt::Debug;
fn use_slice_of_slices<U, T>(slice_of_slices: &[U])
where
U: AsRef<[T]>,
T: Debug,
{
for slice in slice_of_slices {
println!("{:?}", slice.as_ref());
}
}
fn main() {
let vec_of_vec = vec![vec![0]; 10];
use_slice_of_slices(&vec_of_vec);
}
使用std::fmt::Debug;
fn使用切片中的切片(切片中的切片:&[U])
哪里
U:AsRef,
T:调试,
{
对于切片中的切片{
println!(“{:?}”,slice.as_ref());
}
}
fn main(){
让vec_of_vec=vec![vec![0];10];
使用\u切片中的\u切片(&vec\u中的\u向量);
}
不是强制要求元素的类型,而是接受任何类型。。。但是放置一个必须强制到[T]
的边界
这具有几乎相同的效果,因为通用函数只能将[T]
作为一个切片进行操作。作为奖励,它可以处理多种类型(任何类型都可以强制为[T]
)