@@ -22,13 +22,16 @@ impl NodeId {
2222#[ derive( Default ) ]
2323pub struct Nodes {
2424 nodes : Box < [ Node ] > ,
25- valid : Box < [ bool ] >
25+ valid : Box < [ bool ] > ,
2626}
2727
2828impl Nodes {
2929 pub fn new ( nodes : Box < [ Node ] > ) -> Nodes {
30- let mut nodes = Nodes { nodes, valid : Box :: new ( [ ] ) } ;
31-
30+ let mut nodes = Nodes {
31+ nodes,
32+ valid : Box :: new ( [ ] ) ,
33+ } ;
34+
3235 let mut valid = vec ! [ false ; nodes. nodes. len( ) ] . into_boxed_slice ( ) ;
3336 for id in nodes. ids ( ) {
3437 valid[ id. index ( ) ] = true ;
@@ -40,7 +43,11 @@ impl Nodes {
4043
4144 pub fn get ( & self , idx : usize ) -> NodeId {
4245 if idx >= self . nodes . len ( ) {
43- panic ! ( "node index out of bounds: {}, len={}" , idx, self . nodes. len( ) )
46+ panic ! (
47+ "node index out of bounds: {}, len={}" ,
48+ idx,
49+ self . nodes. len( )
50+ )
4451 }
4552 if !self . valid [ idx] {
4653 panic ! ( "node index invalid: {}" , idx)
@@ -49,44 +56,45 @@ impl Nodes {
4956 }
5057
5158 pub fn forward_link ( & self , id : NodeId ) -> & [ ForwardLink ] {
52- // Safety: Node is followed by correct number of forward links
59+ // Safety: Node is followed by correct number of forward links
5360 unsafe { self [ id] . forward_links ( ) }
5461 }
5562
56- pub fn ids ( & self ) -> impl ' _ + Iterator < Item = NodeId > {
63+ pub fn ids ( & self ) -> impl ' _ + Iterator < Item = NodeId > {
5764 self . enumerate ( ) . map ( |( id, _) | id)
5865 }
5966
60- pub fn enumerate ( & self ) -> impl Iterator < Item = ( NodeId , & Node ) > {
67+ pub fn enumerate ( & self ) -> impl Iterator < Item = ( NodeId , & Node ) > {
6168 let mut skip = 0 ;
62- self . nodes . iter ( ) . enumerate ( )
63- . filter_map ( move |( i, node) | {
64- if skip > 0 {
65- skip -= 1 ;
66- return None ;
67- }
68- skip = node. forward_link_blocks ( ) ;
69-
70- // Safety: Bounds checked and ForwardLinks skipped over
71- let id = unsafe { NodeId :: from_index ( i) } ;
72- Some ( ( id, node) )
73- } )
69+ self . nodes . iter ( ) . enumerate ( ) . filter_map ( move |( i, node) | {
70+ if skip > 0 {
71+ skip -= 1 ;
72+ return None ;
73+ }
74+ skip = node. forward_link_blocks ( ) ;
75+
76+ // Safety: Bounds checked and ForwardLinks skipped over
77+ let id = unsafe { NodeId :: from_index ( i) } ;
78+ Some ( ( id, node) )
79+ } )
7480 }
7581
76- pub fn enumerate_mut ( & mut self ) -> impl Iterator < Item = ( NodeId , & mut Node ) > {
82+ pub fn enumerate_mut ( & mut self ) -> impl Iterator < Item = ( NodeId , & mut Node ) > {
7783 let mut skip = 0 ;
78- self . nodes . iter_mut ( ) . enumerate ( )
84+ self . nodes
85+ . iter_mut ( )
86+ . enumerate ( )
7987 . filter_map ( move |( i, node) | {
8088 if skip > 0 {
8189 skip -= 1 ;
8290 return None ;
8391 }
8492 skip = node. forward_link_blocks ( ) ;
85-
93+
8694 // Safety: Bounds checked and ForwardLinks skipped over
87- let id = unsafe { NodeId :: from_index ( i) } ;
95+ let id = unsafe { NodeId :: from_index ( i) } ;
8896 Some ( ( id, node) )
89- } )
97+ } )
9098 }
9199}
92100
@@ -224,29 +232,26 @@ impl Node {
224232 #[ inline( always) ]
225233 pub fn forward_link_blocks ( & self ) -> usize {
226234 const BLOCK_SIZE : usize = std:: mem:: size_of :: < Node > ( ) / std:: mem:: size_of :: < ForwardLink > ( ) ;
227-
235+
228236 const {
229237 assert ! ( std:: mem:: size_of:: <Node >( ) % std:: mem:: size_of:: <ForwardLink >( ) == 0 ) ;
230238 assert ! ( std:: mem:: align_of:: <Node >( ) % std:: mem:: align_of:: <ForwardLink >( ) == 0 ) ;
231- assert ! ( std:: mem:: offset_of!( Node , fwd_links) + std:: mem:: size_of:: <LinkBuffer >( ) == std:: mem:: size_of:: <Node >( ) )
239+ assert ! (
240+ std:: mem:: offset_of!( Node , fwd_links) + std:: mem:: size_of:: <LinkBuffer >( )
241+ == std:: mem:: size_of:: <Node >( )
242+ )
232243 }
233244
234- ( self . fwd_link_len as usize + BLOCK_SIZE - 1 - self . fwd_links . len ( ) ) / BLOCK_SIZE
245+ ( self . fwd_link_len as usize + BLOCK_SIZE - 1 - self . fwd_links . len ( ) ) / BLOCK_SIZE
235246 }
236247
237248 /// Safety: self must be followed by correct number of forward links
238249 pub unsafe fn forward_links ( & self ) -> & [ ForwardLink ] {
239- std:: slice:: from_raw_parts (
240- self . fwd_links . as_ptr ( ) ,
241- self . fwd_link_len as usize
242- )
250+ std:: slice:: from_raw_parts ( self . fwd_links . as_ptr ( ) , self . fwd_link_len as usize )
243251 }
244252
245253 /// Safety: self must be followed by correct number of forward links
246254 pub unsafe fn forward_links_mut ( & mut self ) -> & mut [ ForwardLink ] {
247- std:: slice:: from_raw_parts_mut (
248- self . fwd_links . as_mut_ptr ( ) ,
249- self . fwd_link_len as usize
250- )
255+ std:: slice:: from_raw_parts_mut ( self . fwd_links . as_mut_ptr ( ) , self . fwd_link_len as usize )
251256 }
252- }
257+ }
0 commit comments