arrays - 将数组切片转换为切片数组
问题描述
我有一个固定大小的数组切片 ( &[[T; N]]
),我希望能够将其视为切片数组 ( [&[T]; N]
)。输出数组的第i
-th 元素将是i
原始切片中每个数组的所有第 -th 项的切片:
fn magic_operation<T, const N: usize>(input: &[[T; N]]) -> [&[T]; N] {
todo!()
}
let original = &[
[10, 11, 12],
[20, 21, 22],
[30, 31, 32],
[40, 41, 42],
[50, 51, 52],
];
let new_view = magic_operation(original);
assert_eq!(new_view, [
&[10, 20, 30, 40, 50],
&[11, 21, 31, 41, 51],
&[12, 22, 32, 42, 52],
]);
我不知道这是否暴露在任何 stdlib 方法中,而且我对不安全的 Rust 了解不足,无法自己尝试解决这个问题。这是否可能实现,也许是使用具有不同内存步幅的切片?
解决方案
这是不可能的。
切片中的 Rust 元素是连续的;没有多余的空格。为了返回 a &[10, 20, 30, 40, 50]
,那么该元素序列必须存在于其他地方才能引用它们。该序列在原始输入中不存在。
推荐阅读
- android - 如何使用标记 vuforia 本机 android 制作 AR 视频以始终面对用户的相机
- performance - ActiveMQ 队列流量监控
- java - 如何在 Kotlin 中传递有界通配符类型参数?
- r - is_atomic(x) 中的错误:使用 readxl 时找不到对象“rlang_is_atomic”
- rxjs - 稍后如何在 rxjs 可观察流中使用属性?
- ajax - ajax 没有从 django 的表单中获取价值
- android - 我的应用程序应该实现后退按钮吗?
- php - php逐行拆分文本并获取特定元素
- python-3.6 - python 3.6 和 tdl “控制台未定义错误”
- javascript - 无法使用 Angular5 更新 Firebase 中的项目