@@ -41,6 +41,7 @@ pub fn align_up(address: u64, alignment: u64) -> Result<u64> {
41
41
/// - Allocated -> Free: IntervalTree::free()
42
42
/// - * -> None: IntervalTree::delete()
43
43
#[ derive( Clone , Copy , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
44
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
44
45
pub enum NodeState {
45
46
/// Node is free.
46
47
Free ,
@@ -56,6 +57,7 @@ impl NodeState {
56
57
57
58
/// Internal tree node to implement interval tree.
58
59
#[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
60
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
59
61
pub ( crate ) struct InnerNode {
60
62
/// Interval handled by this node.
61
63
key : RangeInclusive ,
@@ -490,6 +492,7 @@ fn height(node: &Option<Box<InnerNode>>) -> u64 {
490
492
491
493
/// An interval tree implementation specialized for VMM memory slots management.
492
494
#[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
495
+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
493
496
pub struct IntervalTree {
494
497
root : Option < Box < InnerNode > > ,
495
498
}
0 commit comments