#array #collection #data #beginning #add #raw-vec #expandable

cev

一个可扩展的数据数组,用于向数组开头添加数据

1个不稳定版本

0.1.0 2023年9月3日

#680内存管理


subimg 中使用

MIT 许可证

39KB
867

cev

一个可扩展的数据数组,用于向数组开头添加数据。

use cev::Cev;

let mut cev = Cev::new();
cev.push(1);
cev.push(2);
cev.push(3);

assert_eq!(cev, [3, 2, 1]);
assert_eq!(cev.pop(), Some(3));
assert_eq!(cev.pop(), Some(2));
assert_eq!(cev, [1]);

let mut cev_app = Cev::from([-2, -1, 0]);
cev.append(&mut cev_app);
assert_eq!(cev, [-2, -1, 0, 1]);

let mut cev_list = (0..6).collect::<Cev<_>>();
assert_eq!(cev_list, [0, 1, 2, 3, 4, 5]);

一个包含类型为 u8 的元素 ab 且容量为4的Cev数组可以表示如下。

         mov_ptr  raw_ptr  len      capacity
Any mem +--------+--------+--------+--------+
        |¹0x0124 |²0x0122 |    2   |   4    |
        +--------+--------+--------+--------+
            |
            v
Heap    +--------+--------+--------+--------+
        | uninit | uninit |    b   |   a    |
        +--------+--------+--------+--------+
            |
            v
Pointer +--------+--------+--------+--------+
        | 0x0122 | 0x0123 | 0x0124 | 0x0125 |
        +--------+--------+--------+--------+
                                      <--

        ¹ Beginning of array data initialization.
        ² To allocate and deallocate an array.

无运行时依赖