Skip to main content

orx_tree/dyn/
variant.rs

1use super::reclaimer::DynReclaimer;
2use crate::TreeVariant;
3use core::marker::PhantomData;
4use orx_selfref_col::{RefsSingle, RefsVec, Variant};
5
6/// A dynamic tree where each of the nodes might have any number of child nodes.
7pub struct Dyn<T> {
8    p: PhantomData<T>,
9}
10
11/// # SAFETY
12///
13/// Tree variants do not hold any data, safe to send or sync.
14unsafe impl<T> Sync for Dyn<T> {}
15
16/// # SAFETY
17///
18/// Tree variants do not hold any data, safe to send or sync.
19unsafe impl<T> Send for Dyn<T> {}
20
21impl<T> Variant for Dyn<T> {
22    type Item = T;
23
24    type Prev = RefsSingle<Self>;
25
26    type Next = RefsVec<Self>;
27
28    type Ends = RefsSingle<Self>;
29}
30
31impl<T> TreeVariant for Dyn<T> {
32    type Reclaimer = DynReclaimer;
33
34    type Children = RefsVec<Self>;
35}