7 个版本
0.3.2 | 2022年3月23日 |
---|---|
0.3.1 | 2021年4月11日 |
0.2.1 | 2018年11月12日 |
0.2.0 | 2018年4月27日 |
0.1.1 | 2017年10月13日 |
#1135 在 数据结构
2,034 每月下载量
在 27 个 包(12 个直接)中使用
23KB
242 行
slice-of-array
在 [T]
上提供扩展特质,用于将其转换为 [[T; n]]
。
[dependencies]
slice-of-array = "0.3.2"
extern crate slice_of_array;
use ::slice_of_array::prelude::*;
let vec = vec![[1, 0], [0, 1]];
let _: &[i32] = vec.flat();
let _: &[[[i32; 2]; 1]] = vec.nest();
let _: &[[i32; 2]; 2] = vec.as_array();
在您的公共接口中使用类似 &[[f64; 3]]
的类型时无需担忧!
当委托工作到(插入您最喜欢的线性代数库)时,您将能够很好地展平这些内容!
更重要的是,使用您库的每个人将不会在创建必要的切片类型以使用您的接口时遇到任何问题。
...嗯,也就是说,假设他们也找到了这个或类似的包。并且他们没有在内部使用类似于 (f64, f64, f64)
或某些 #[repr(rust)]
结构体。或者数组结构。
不可能赢得所有人。
问答
哦,天哪,又是一个切片到数组库
嘿嘿嘿,等等!这不是一个切片到数组的库。这是一个数组切片库!每个人和他们的妈妈都在crates.io上发布了他们自己的crate,用于在&[T]
和&[T; n]
之间进行转换,但只有slice-of-array
™允许您在&[T]
和&[[T; n]]
之间进行转换。
话虽如此...嗯,是的,它的一个特性确实是将切片转换为数组。对不起。
默认情况下会引发panic吗?
默认情况下会引发panic。
它的主要目的是在处理扁平向量的API和处理数组切片的API之间建立桥梁。在这些预期要使用的地方,你已经知道你的数据是适当形状的,而Option
会碍事。
我想创建一个Vec<_>
而不是&[_]
.flat().to_vec()
或.nest().to_vec()
不不不,我想创建一个具有零成本的Vec<_>
哎呀!你正在操作当你的vec超出作用域时将传递给分配器的元数据,我不认为分配器喜欢惊喜。我不想在良心上留下这样的东西!
如果你确信这个问题有解决方案,那么请提交一个PR。