@@ -33,9 +33,13 @@ impl HoleList {
3333        } 
3434    } 
3535
36-     /// Creates a `HoleList` that contains the given hole. This function is unsafe because it 
36+     /// Creates a `HoleList` that contains the given hole. 
37+      /// 
38+      /// ## Safety 
39+      /// 
40+      /// This function is unsafe because it 
3741     /// creates a hole at the given `hole_addr`. This can cause undefined behavior if this address 
38-      /// is invalid or if memory from the `[hole_addr, hole_addr+size) range is used somewhere else. 
42+      /// is invalid or if memory from the `[hole_addr, hole_addr+size)`  range is used somewhere else. 
3943     /// 
4044     /// The pointer to `hole_addr` is automatically aligned. 
4145     pub  unsafe  fn  new ( hole_addr :  usize ,  hole_size :  usize )  -> HoleList  { 
@@ -56,8 +60,14 @@ impl HoleList {
5660        } 
5761    } 
5862
59-     /// Align layout. Returns a layout with size increased to 
60-      /// fit at least `HoleList::min_size` and proper alignment of a `Hole`. 
63+     /// Aligns the given layout for use with `HoleList`. 
64+      /// 
65+      /// Returns a layout with size increased to fit at least `HoleList::min_size` and proper 
66+      /// alignment of a `Hole`. 
67+      /// 
68+      /// The [`allocate_first_fit`][HoleList::allocate_first_fit] and 
69+      /// [`deallocate`][HoleList::deallocate] methods perform the required alignment 
70+      /// themselves, so calling this function manually is not necessary. 
6171     pub  fn  align_layout ( layout :  Layout )  -> Layout  { 
6272        let  mut  size = layout. size ( ) ; 
6373        if  size < Self :: min_size ( )  { 
@@ -69,11 +79,14 @@ impl HoleList {
6979        layout
7080    } 
7181
72-     /// Searches the list for a big enough hole. A hole is big enough if it can hold an allocation 
73-      /// of `layout.size()` bytes with the given `layout.align()`. If such a hole is found in the 
74-      /// list, a block of the required size is allocated from it. Then the start address of that 
82+     /// Searches the list for a big enough hole. 
83+      /// 
84+      /// A hole is big enough if it can hold an allocation of `layout.size()` bytes with 
85+      /// the given `layout.align()`. If such a hole is found in the list, a block of the 
86+      /// required size is allocated from it. Then the start address of that 
7587     /// block and the aligned layout are returned. The automatic layout alignment is required 
76-      /// because the HoleList has some additional layout requirements for each memory block. 
88+      /// because the `HoleList` has some additional layout requirements for each memory block. 
89+      /// 
7790     /// This function uses the “first fit” strategy, so it uses the first hole that is big 
7891     /// enough. Thus the runtime is in O(n) but it should be reasonably fast for small allocations. 
7992     pub  fn  allocate_first_fit ( & mut  self ,  layout :  Layout )  -> Result < ( NonNull < u8 > ,  Layout ) ,  ( ) >  { 
@@ -94,16 +107,18 @@ impl HoleList {
94107        } ) 
95108    } 
96109
97-     /// Frees the allocation given by `ptr` and `layout`. `ptr` must be a pointer returned by a call 
98-      /// to the `allocate_first_fit` function with identical layout. Undefined behavior may occur for 
99-      /// invalid arguments. 
100-      /// The function performs exactly the same layout adjustments as [allocate_first_fit] and 
110+     /// Frees the allocation given by `ptr` and `layout`. 
111+      /// 
112+      /// `ptr` must be a pointer returned by a call to the [`allocate_first_fit`] function with 
113+      /// identical layout. Undefined behavior may occur for invalid arguments. 
114+      /// The function performs exactly the same layout adjustments as [`allocate_first_fit`] and 
101115     /// returns the aligned layout. 
116+      /// 
102117     /// This function walks the list and inserts the given block at the correct place. If the freed 
103118     /// block is adjacent to another free block, the blocks are merged again. 
104119     /// This operation is in `O(n)` since the list needs to be sorted by address. 
105120     /// 
106-      /// [allocate_first_fit]: ./struct. HoleList.html#method. allocate_first_fit 
121+      /// [` allocate_first_fit` ]: HoleList:: allocate_first_fit 
107122     pub  unsafe  fn  deallocate ( & mut  self ,  ptr :  NonNull < u8 > ,  layout :  Layout )  -> Layout  { 
108123        let  aligned_layout = Self :: align_layout ( layout) ; 
109124        deallocate ( 
0 commit comments