#array #circular #fixed-size #infinite #index #pushes

circular-array

允许无限次向固定大小的数组中推送元素的环形数组

4 个版本

0.2.2 2024 年 4 月 3 日
0.2.1 2024 年 4 月 3 日
0.2.0 2024 年 4 月 3 日
0.1.0 2024 年 4 月 3 日

#4 in #infinite

MIT 许可证

12KB
192

环形数组文档

欢迎使用 CircularArray 文档。 CircularArray 是一个 Rust 模块,它实现了环形数组,允许无限次向固定大小的数组中推送元素。本文档将指导您如何使用 CircularArray,包括如何直接操作数组索引以及如何将环形数组转换为标准固定大小的数组。

特性

  • 固定大小:以预定的尺寸初始化,不能超过此尺寸。
  • 无限推送:允许无限次向数组中推送元素。当数组达到其容量时,新元素会覆盖最旧的元素。
  • 索引操作:提供使用 IndexIndexMut 特性直接操作特定索引元素的能力。
  • 转换为数组:支持将环形数组的当前状态转换为固定大小的数组表示。

用法

要使用 CircularArray,将其包含在您的 Rust 项目中,并按照下面的示例了解如何与之交互。

索引和 IndexMut 示例

此示例演示了如何使用索引操作数组元素。它显示了如何直接修改元素并使用断言验证它们的值。

#[test]
#[allow(non_snake_case)]
fn test_Index_and_IndexMut() {
    let mut arr = CircularArray::<3, u32>::new();
    arr.push(0);
    arr.push(0);
    arr.push(0);
    arr.push(0);
    arr.push(0);
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    assert_eq!(arr[0], 1);
    assert_eq!(arr[1], 2);
    assert_eq!(arr[2], 3);
}

转换为数组

此示例说明了如何将 CircularArray 的状态转换为固定大小的数组。它还显示了数组的环形特性如何与 push 方法一起工作,新元素会替换数组中最旧的元素。

#[test]
fn test_to_array() {
    let mut arr = CircularArray::<3, u32>::new();
    arr.push(1);
    arr.push(2);
    arr.push(3);
    assert_eq!(arr.to_array(), [1, 2, 3]);
    arr.push(4);
    assert_eq!(arr.to_array(), [2, 3, 4]);
}

结论

CircularArray 提供了一种强大且灵活的方法来在 Rust 中处理固定大小的数组,尤其是在处理需要用新条目覆盖旧数据的数据流时。通过使用索引特性和转换方法,它提供了一个直观的 API 来管理和与环形数组交互。

无运行时依赖