#二进制编码 #序列化 #无std #无分配

无std musli-allocator

Müsli的分配器

21个版本

0.0.117 2024年4月20日
0.0.116 2024年4月20日
0.0.108 2024年3月30日

#280内存管理

Download history 67/week @ 2024-04-21 1/week @ 2024-04-28 6/week @ 2024-05-12 44/week @ 2024-05-19 35/week @ 2024-05-26 31/week @ 2024-06-02 23/week @ 2024-06-09 34/week @ 2024-06-16 20/week @ 2024-06-23 11/week @ 2024-06-30 8/week @ 2024-07-07 36/week @ 2024-07-14 32/week @ 2024-07-21 41/week @ 2024-07-28 16/week @ 2024-08-04

每月 128 下载
用于 8 个crates(直接使用2个)

MIT/Apache

1MB
19K SLoC

musli-allocator

github crates.io docs.rs build status

Müsli的分配支持。

该crate包含两种类型的分配器

  • System 分配器,它使用系统分配设施。特别是 std::alloc::System
  • Stack 分配器,可以从固定大小的切片中分配缓冲区。

示例

use musli::{Allocator, Buf};

musli_allocator::with(|alloc| {
    let mut a = alloc.alloc().expect("allocation a failed");
    let mut b = alloc.alloc().expect("allocation b failed");

    b.write(b"He11o");
    a.write(b.as_slice());

    assert_eq!(a.as_slice(), b"He11o");
    assert_eq!(a.len(), 5);

    a.write(b" W0rld");

    assert_eq!(a.as_slice(), b"He11o W0rld");
    assert_eq!(a.len(), 11);

    let mut c = alloc.alloc().expect("allocation c failed");
    c.write(b"!");
    a.write(c.as_slice());

    assert_eq!(a.as_slice(), b"He11o W0rld!");
    assert_eq!(a.len(), 12);
});

依赖

~245–710KB
~17K SLoC