Crate triomphe

Crate triomphe 

Source
Expand description

Fork of Arc. This has the following advantages over std::sync::Arc:

  • triomphe::Arc doesn’t support weak references: we save space by excluding the weak reference count, and we don’t do extra read-modify-update operations to handle the possibility of weak references.
  • triomphe::UniqueArc allows one to construct a temporarily-mutable Arc which can be converted to a regular triomphe::Arc later
  • triomphe::OffsetArc can be used transparently from C++ code and is compatible with (and can be converted to/from) triomphe::Arc
  • triomphe::ArcBorrow is functionally similar to &triomphe::Arc<T>, however in memory it’s simply &T. This makes it more flexible for FFI; the source of the borrow need not be an Arc pinned on the stack (and can instead be a pointer from C++, or an OffsetArc). Additionally, this helps avoid pointer-chasing.
  • triomphe::Arc has can be constructed for dynamically-sized types via from_header_and_iter
  • triomphe::ThinArc provides thin-pointer Arcs to dynamically sized types
  • triomphe::ArcUnion is union of two triomphe:Arcs which fits inside one word of memory

Structs§

Arc
An atomically reference counted shared pointer
ArcBorrow
A “borrowed Arc”. This is a pointer to a T that is known to have been allocated within an Arc.
ArcUnion
A tagged union that can represent Arc<A> or Arc<B> while only consuming a single word. The type is also NonNull, and thus can be stored in an Option without increasing size.
HeaderSlice
Structure to allow Arc-managing some fixed-sized data and a variably-sized slice in a single allocation.
HeaderSliceWithLengthProtected
A type wrapping HeaderSlice<HeaderWithLength<H>, T> that is used internally in ThinArc.
HeaderWithLength
Header data with an inline length. Consumers that use HeaderWithLength as the Header type in HeaderSlice can take advantage of ThinArc.
OffsetArc
An Arc, except it holds a pointer to the T instead of to the entire ArcInner.
ThinArc
A “thin” Arc containing dynamically sized data
UniqueArc
An Arc that is known to be uniquely owned

Enums§

ArcUnionBorrow
This represents a borrow of an ArcUnion.