@@ -41,6 +41,7 @@ pub fn align_up(address: u64, alignment: u64) -> Result<u64> {
4141/// - Allocated -> Free: IntervalTree::free()
4242/// - * -> None: IntervalTree::delete()
4343#[ derive( Clone , Copy , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
44+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
4445pub enum NodeState {
4546 /// Node is free.
4647 Free ,
@@ -56,6 +57,7 @@ impl NodeState {
5657
5758/// Internal tree node to implement interval tree.
5859#[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
60+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
5961pub ( crate ) struct InnerNode {
6062 /// Interval handled by this node.
6163 key : RangeInclusive ,
@@ -490,6 +492,7 @@ fn height(node: &Option<Box<InnerNode>>) -> u64 {
490492
491493/// An interval tree implementation specialized for VMM memory slots management.
492494#[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
495+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
493496pub struct IntervalTree {
494497 root : Option < Box < InnerNode > > ,
495498}
0 commit comments