Types that are always reference counted.
It allows such types to define their own custom ref increment and decrement functions.
Additionally, it allows users to convert from a shared reference
&T to an owned reference
This is usually implemented by wrappers to existing structures on the C side of the code. For
Rust code, the recommendation is to use
Ref to create reference-counted instances of a
Implementers must ensure that increments to the reference count keeps the object alive in memory at least until a matching decrement performed.
Implementers must also ensure that all instances are reference-counted. (Otherwise they
won’t be able to honour the requirement that
AlwaysRefCounted::inc_ref keep the object
Increments the reference count on the object.
Decrements the reference count on the object.
Frees the object when the count reaches zero.
Callers must ensure that there was a previous matching increment to the reference count,
and that the object is no longer used after its reference count is decremented (as it may
result in the object being freed), unless the caller owns another increment on the refcount
(e.g., it calls
AlwaysRefCounted::inc_ref twice, then calls