#引用计数 #弱引用 #arc #数据结构 #sync #ffi

无 std triomphe

基于 std::sync::Arc 的分支,增加了额外功能,且不包含弱引用(最初为 servo_arc)

14 个版本

使用旧 Rust 2015

0.1.13 2024年6月17日
0.1.11 2023年11月29日
0.1.9 2023年7月5日
0.1.8 2022年9月6日
0.1.0 2018年12月5日

#13 in 并发

Download history 275249/week @ 2024-05-03 301687/week @ 2024-05-10 287336/week @ 2024-05-17 293171/week @ 2024-05-24 339793/week @ 2024-05-31 330858/week @ 2024-06-07 322155/week @ 2024-06-14 332089/week @ 2024-06-21 312155/week @ 2024-06-28 348902/week @ 2024-07-05 361574/week @ 2024-07-12 364678/week @ 2024-07-19 352266/week @ 2024-07-26 360818/week @ 2024-08-02 400020/week @ 2024-08-09 440078/week @ 2024-08-16

1,621,493 每月下载量
用于 738 个 crates (45 个直接使用)

MIT/Apache

99KB
2K SLoC

Triomphe

Arc 的分支。相对于 std::sync::Arc,具有以下优势

  • triomphe::Arc 不支持弱引用:我们通过排除弱引用计数来节省空间,并且不执行额外的读取-修改-更新操作来处理弱引用的可能性。
  • triomphe::UniqueArc 允许构造一个临时可变的 Arc,以后可以将其转换为常规的 triomphe::Arc
  • triomphe::OffsetArc 可以从 C++ 代码中透明地使用,并且与 triomphe::Arc 兼容(并且可以相互转换)
  • triomphe::ArcBorrow 函数上类似于 &triomphe::Arc<T>,然而在内存中它仅仅是 &T。这使得它在 FFI 中更加灵活;借用源不必是堆上固定的 Arc(而是可以是来自 C++ 的指针,或者是一个 OffsetArc)。此外,这有助于避免指针遍历。
  • triomphe::Arc 可以通过 from_header_and_iter 构造动态大小的类型
  • triomphe::ThinArc 为动态大小类型提供瘦指针 Arc
  • triomphe::ArcUnion 是两个 triomphe:Arc 的联合,它适合于一个字节的内存

这个 crate 是一个针对社区通用使用的 servo_arc 版本。

依赖

~120–405KB