@@ -24,9 +24,9 @@ use zerocopy::{AlignmentError, ConvertError, FromBytes, IntoBytes, Ref, SizeErro
2424use zerocopy_derive:: { FromBytes , Immutable , IntoBytes } ;
2525
2626use crate :: {
27- part:: part:: { retain, ClearOptions } ,
28- ver:: Version ,
2927 EMPTY ,
28+ part:: part:: { ClearOptions , retain} ,
29+ ver:: Version ,
3030} ;
3131
3232pub const FTPR : & str = "FTPR" ;
@@ -142,16 +142,13 @@ impl Display for FPTHeader {
142142 }
143143}
144144
145+ type EntryConvertError < ' a > =
146+ ConvertError < AlignmentError < & ' a [ u8 ] , [ FPTEntry ] > , SizeError < & ' a [ u8 ] , [ FPTEntry ] > , Infallible > ;
147+
145148#[ derive( Debug ) ]
146149pub enum FptError < ' a > {
147150 ParseHeaderError ( SizeError < & ' a [ u8 ] , FPTHeader > ) ,
148- ParseEntryError (
149- ConvertError <
150- AlignmentError < & ' a [ u8 ] , [ FPTEntry ] > ,
151- SizeError < & ' a [ u8 ] , [ FPTEntry ] > ,
152- Infallible ,
153- > ,
154- ) ,
151+ ParseEntryError ( EntryConvertError < ' a > ) ,
155152}
156153
157154#[ derive( Serialize , Deserialize , Clone , Copy , Debug , Eq , PartialEq ) ]
@@ -293,22 +290,20 @@ const POSSIBLE_OFFSET: usize = 16;
293290fn determine_offset ( data : & [ u8 ] ) -> Option < usize > {
294291 let m = & data[ ..FPT_MAGIC_BYTES . len ( ) ] ;
295292 if m. eq ( FPT_MAGIC_BYTES ) {
296- return Some ( 0 ) ;
293+ Some ( 0 )
297294 } else {
298295 let m = & data[ POSSIBLE_OFFSET ..POSSIBLE_OFFSET + FPT_MAGIC_BYTES . len ( ) ] ;
299296 if m. eq ( FPT_MAGIC_BYTES ) {
300- return Some ( POSSIBLE_OFFSET ) ;
297+ Some ( POSSIBLE_OFFSET )
301298 } else {
302- return None ;
299+ None
303300 }
304301 }
305302}
306303
307304impl < ' a > FPT {
308305 pub fn parse ( data : & ' a [ u8 ] ) -> Option < Result < Self , FptError < ' a > > > {
309- let Some ( offset) = determine_offset ( data) else {
310- return None ;
311- } ;
306+ let offset = determine_offset ( data) ?;
312307 // Save for checksum recalculation
313308 let pre_header = & data[ ..offset] ;
314309 let d = & data[ offset..] ;
@@ -353,7 +348,7 @@ impl<'a> FPT {
353348
354349 /// Two's complement of the sum of the bytes
355350 pub fn header_checksum ( & self ) -> u8 {
356- let mut c = self . header . clone ( ) ;
351+ let mut c = self . header ;
357352 // Initial checksum field itself must be 0.
358353 c. checksum = 0 ;
359354 let d = [ self . pre_header . as_bytes ( ) , c. as_bytes ( ) ] . concat ( ) ;
@@ -373,12 +368,12 @@ impl<'a> FPT {
373368 let f = e. flags ;
374369 retain ( e. name ( ) , options) && e. size ( ) > 0 && f. kind ( ) != PartitionKind :: NVRAM
375370 } )
376- . map ( |e| * e )
371+ . copied ( )
377372 . collect ( ) ;
378373 self . header . entries = self . entries . len ( ) as u32 ;
379374 // clear EFFS presence flag if applicable
380375 if ( !options. parts_force_retention . contains ( & EFFS . into ( ) )
381- && options. parts_force_deletion . len ( ) == 0 )
376+ && options. parts_force_deletion . is_empty ( ) )
382377 || options. parts_force_deletion . contains ( & EFFS . into ( ) )
383378 {
384379 // TODO: define bitfield, parameterize via API
0 commit comments