@@ -366,18 +366,26 @@ impl FileFilter {
366
366
use self :: SortCase :: { Sensitive , Insensitive } ;
367
367
368
368
match self . sort_field {
369
- SortField :: Unsorted => cmp:: Ordering :: Equal ,
370
- SortField :: Name ( Sensitive ) => natord:: compare ( & a. name , & b. name ) ,
371
- SortField :: Name ( Insensitive ) => natord:: compare_ignore_case ( & a. name , & b. name ) ,
372
- SortField :: Size => a. metadata . len ( ) . cmp ( & b. metadata . len ( ) ) ,
373
- SortField :: FileInode => a. metadata . ino ( ) . cmp ( & b. metadata . ino ( ) ) ,
374
- SortField :: ModifiedDate => a. metadata . mtime ( ) . cmp ( & b. metadata . mtime ( ) ) ,
375
- SortField :: AccessedDate => a. metadata . atime ( ) . cmp ( & b. metadata . atime ( ) ) ,
376
- SortField :: CreatedDate => a. metadata . ctime ( ) . cmp ( & b. metadata . ctime ( ) ) ,
377
- SortField :: Extension => match a. ext . cmp ( & b. ext ) {
369
+ SortField :: Unsorted => cmp:: Ordering :: Equal ,
370
+
371
+ SortField :: Name ( Sensitive ) => natord:: compare ( & a. name , & b. name ) ,
372
+ SortField :: Name ( Insensitive ) => natord:: compare_ignore_case ( & a. name , & b. name ) ,
373
+
374
+ SortField :: Size => a. metadata . len ( ) . cmp ( & b. metadata . len ( ) ) ,
375
+ SortField :: FileInode => a. metadata . ino ( ) . cmp ( & b. metadata . ino ( ) ) ,
376
+ SortField :: ModifiedDate => a. metadata . mtime ( ) . cmp ( & b. metadata . mtime ( ) ) ,
377
+ SortField :: AccessedDate => a. metadata . atime ( ) . cmp ( & b. metadata . atime ( ) ) ,
378
+ SortField :: CreatedDate => a. metadata . ctime ( ) . cmp ( & b. metadata . ctime ( ) ) ,
379
+
380
+ SortField :: Extension ( Sensitive ) => match a. ext . cmp ( & b. ext ) {
378
381
cmp:: Ordering :: Equal => natord:: compare ( & * a. name , & * b. name ) ,
379
382
order => order,
380
383
} ,
384
+
385
+ SortField :: Extension ( Insensitive ) => match a. ext . cmp ( & b. ext ) {
386
+ cmp:: Ordering :: Equal => natord:: compare_ignore_case ( & * a. name , & * b. name ) ,
387
+ order => order,
388
+ } ,
381
389
}
382
390
}
383
391
}
@@ -462,12 +470,14 @@ impl RecurseOptions {
462
470
/// User-supplied field to sort by.
463
471
#[ derive( PartialEq , Debug , Copy , Clone ) ]
464
472
pub enum SortField {
465
- Unsorted , Name ( SortCase ) , Extension , Size , FileInode ,
473
+ Unsorted ,
474
+ Name ( SortCase ) , Extension ( SortCase ) ,
475
+ Size , FileInode ,
466
476
ModifiedDate , AccessedDate , CreatedDate ,
467
477
}
468
478
469
479
/// Whether a field should be sorted case-sensitively or case-insensitively.
470
- ///
480
+ ///
471
481
/// This determines which of the `natord` functions to use.
472
482
#[ derive( PartialEq , Debug , Copy , Clone ) ]
473
483
pub enum SortCase {
@@ -488,7 +498,8 @@ impl OptionSet for SortField {
488
498
"name" | "filename" => Ok ( SortField :: Name ( SortCase :: Sensitive ) ) ,
489
499
"Name" | "Filename" => Ok ( SortField :: Name ( SortCase :: Insensitive ) ) ,
490
500
"size" | "filesize" => Ok ( SortField :: Size ) ,
491
- "ext" | "extension" => Ok ( SortField :: Extension ) ,
501
+ "ext" | "extension" => Ok ( SortField :: Extension ( SortCase :: Sensitive ) ) ,
502
+ "Ext" | "Extension" => Ok ( SortField :: Extension ( SortCase :: Insensitive ) ) ,
492
503
"mod" | "modified" => Ok ( SortField :: ModifiedDate ) ,
493
504
"acc" | "accessed" => Ok ( SortField :: AccessedDate ) ,
494
505
"cr" | "created" => Ok ( SortField :: CreatedDate ) ,
0 commit comments