Arrays 如何在大多数值相同但某些值不同的情况下初始化静态数组?

Arrays 如何在大多数值相同但某些值不同的情况下初始化静态数组?,arrays,syntax,static,rust,Arrays,Syntax,Static,Rust,我想使用静态数组或常量数组,但使用[T;N]语法以外的其他方法初始化它。我需要定义特定的元素,但所有其他值都可以默认为0或其他值 在C中,可以执行以下操作: 字节数组[256]={ [0x1F]=(1没有与您的C代码段等效的锈迹。显示仅允许3种简单模式: 空的 价值,价值,价值,等等 价值;大小 因此,目前使用数组语法,您无法做到这一点 现在,让我们看一下宏的解决方案。没有“计数”的方法,所以除非你为Rust编译器编写一个宏,否则你不能用宏来计算 我的首选解决方案是在编译之前使用其他工具生成文件

我想使用静态数组或常量数组,但使用
[T;N]
语法以外的其他方法初始化它。我需要定义特定的元素,但所有其他值都可以默认为0或其他值

在C中,可以执行以下操作:

字节数组[256]={

[0x1F]=(1没有与您的C代码段等效的锈迹。显示仅允许3种简单模式:

  • 空的
  • 价值,价值,价值,等等
  • 价值;大小
  • 因此,目前使用数组语法,您无法做到这一点

    现在,让我们看一下宏的解决方案。没有“计数”的方法,所以除非你为Rust编译器编写一个宏,否则你不能用宏来计算

    我的首选解决方案是在编译之前使用其他工具生成文件。例如,您可以在编译之前使用Cargo


    将来可能会有一个解决方案。about const函数可以提供在编译时执行所需操作的可能性,但这目前是不可能的

    static ARRAY: [u8; 256] = {
        // x is some arbitrary number of elements
        let mut array = [0, x];
        array[i] = 'b',
        array[j] = 'a',
        array[k] = 'd',
        array
    };