pub unsafe trait ListItem<const ID: u64 = 0>: ListArcSafe<ID> {
    // Required methods
    unsafe fn view_links(me: *const Self) -> *mut ListLinks<ID>;
    unsafe fn view_value(me: *mut ListLinks<ID>) -> *const Self;
    unsafe fn prepare_to_insert(me: *const Self) -> *mut ListLinks<ID>;
    unsafe fn post_remove(me: *mut ListLinks<ID>) -> *const Self;
}Expand description
Implemented by types where a ListArc<Self> can be inserted into a List.
§Safety
Implementers must ensure that they provide the guarantees documented on methods provided by this trait.
Required Methods§
Sourceunsafe fn view_links(me: *const Self) -> *mut ListLinks<ID>
 
unsafe fn view_links(me: *const Self) -> *mut ListLinks<ID>
Views the ListLinks for this value.
§Guarantees
If there is a previous call to prepare_to_insert and there is no call to post_remove
since the most recent such call, then this returns the same pointer as the one returned by
the most recent call to prepare_to_insert.
Otherwise, the returned pointer points at a read-only ListLinks with two null pointers.
§Safety
The provided pointer must point at a valid value. (It need not be in an Arc.)
Sourceunsafe fn view_value(me: *mut ListLinks<ID>) -> *const Self
 
unsafe fn view_value(me: *mut ListLinks<ID>) -> *const Self
View the full value given its ListLinks field.
Can only be used when the value is in a list.
§Guarantees
- Returns the same pointer as the one passed to the most recent call to prepare_to_insert.
- The returned pointer is valid until the next call to post_remove.
§Safety
- The provided pointer must originate from the most recent call to prepare_to_insert, or from a call toview_linksthat happened after the most recent call toprepare_to_insert.
- Since the most recent call to prepare_to_insert, thepost_removemethod must not have been called.
Sourceunsafe fn prepare_to_insert(me: *const Self) -> *mut ListLinks<ID>
 
unsafe fn prepare_to_insert(me: *const Self) -> *mut ListLinks<ID>
This is called when an item is inserted into a List.
§Guarantees
The caller is granted exclusive access to the returned ListLinks until post_remove is
called.
§Safety
- The provided pointer must point at a valid value in an Arc.
- Calls to prepare_to_insertandpost_removeon the same value must alternate.
- The caller must own the ListArcfor this value.
- The caller must not give up ownership of the ListArcunlesspost_removehas been called after this call toprepare_to_insert.
Sourceunsafe fn post_remove(me: *mut ListLinks<ID>) -> *const Self
 
unsafe fn post_remove(me: *mut ListLinks<ID>) -> *const Self
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.