#copy #capacity #contiguous #array #fixed #growable #no-alloc

无 std copyvec

一个连续可增长的数组类型,具有固定、栈分配的容量,实现了 Copy

6 个版本

0.2.0 2024 年 7 月 13 日
0.1.5 2024 年 7 月 12 日

648Rust 模式

Download history 280/week @ 2024-07-11 344/week @ 2024-07-18 339/week @ 2024-07-25 246/week @ 2024-08-01 356/week @ 2024-08-08 702/week @ 2024-08-15

每月 1,712 次下载

MIT/Apache

48KB
856

一个栈分配的序列,镜像 Vec 的 API,但

  • 实现了 Copy (并且只能包含 Copy 类型)。
  • 不会增长。
  • #[no_std]/无-alloc 兼容。

// const-friendly
const VEC: CopyVec<&str, 10> = CopyVec::new();

// easy initialising
let mut vec = copyvec!["a", "b", "c"; + 2];
                                   // ^~ with excess capacity

// use the API's you know
vec.push("d");

// including iteration
for it in &mut vec {
    if *it == "a" {
        *it = "A"
    }
}

assert_eq!(vec, ["A", "b", "c", "d"]);
vec.retain(|it| *it == "b" || *it == "c");
assert_eq!(vec.remove(0), "b");

其他功能

如果你喜欢这个包,你可能也会喜欢 stackstack


lib.rs:

一个栈分配的序列,镜像 Vec 的 API,但

  • 实现了 Copy (并且只能包含 Copy 类型)。
  • 不会增长。
  • #[no_std]/无-alloc 兼容。

// const-friendly
const VEC: CopyVec<&str, 10> = CopyVec::new();

// easy initialising
let mut vec = copyvec!["a", "b", "c"; + 2];
                                   // ^~ with excess capacity

// use the API's you know
vec.push("d");

// including iteration
for it in &mut vec {
    if *it == "a" {
        *it = "A"
    }
}

assert_eq!(vec, ["A", "b", "c", "d"]);
vec.retain(|it| *it == "b" || *it == "c");
assert_eq!(vec.remove(0), "b");

其他功能

如果你喜欢这个包,你可能也会喜欢 stackstack

依赖

~0–355KB