我有一个3元素阵列:
let color = [0.25, 0.25, 0.25];
我想将它变成一个4元素数组,它将是3元素数组加上一个附加元素:
let color_with_alpha = [color[0], color[1], color[2], 1.0];
我知道Rust在很多方面都有很酷的语法糖;这有什么用的吗?类似的东西:
let color_with_alpha = [color, 1.0];
我已经阅读了concat
macro,但似乎只创建了字符串切片。我想象有一个基于矢量的解决方案,但我不需要动态调整大小。
答案 0 :(得分:3)
不,没有这样的语法。
总是很难证明是负面的,但是我实施了parser of Rust code并且我已经使用Rust超过3年了;我从来没有遇到任何这样的语法。
我能想象的最接近的是为不同大小的数组实现一个特征。这很复杂,因为您无法移出非Copy
数组。由于没有通用整数,因此您必须为所需的每个数组大小实现此特征。
trait ArrayAppend<T> {
type Output;
fn append(self, val: T) -> Self::Output;
}
impl<T: Copy> ArrayAppend<T> for [T; 3] {
type Output = [T; 4];
fn append(self, val: T) -> Self::Output {
[self[0], self[1], self[2], val]
}
}
fn main() {
let color = [0.25, 0.25, 0.25];
let color2 = color.append(1.0);
}