@@ -394,19 +394,16 @@ impl RamFile {
394394 }
395395}
396396
397+ type MemDirectoryMap = BTreeMap < String , Box < dyn VfsNode + core:: marker:: Send + core:: marker:: Sync > > ;
398+
397399pub struct MemDirectoryInterface {
398400 /// Directory entries
399- inner :
400- Arc < RwLock < BTreeMap < String , Box < dyn VfsNode + core:: marker:: Send + core:: marker:: Sync > > > > ,
401+ inner : Arc < RwLock < MemDirectoryMap > > ,
401402 read_idx : Mutex < usize > ,
402403}
403404
404405impl MemDirectoryInterface {
405- pub fn new (
406- inner : Arc <
407- RwLock < BTreeMap < String , Box < dyn VfsNode + core:: marker:: Send + core:: marker:: Sync > > > ,
408- > ,
409- ) -> Self {
406+ pub fn new ( inner : Arc < RwLock < MemDirectoryMap > > ) -> Self {
410407 Self {
411408 inner,
412409 read_idx : Mutex :: new ( 0 ) ,
@@ -477,8 +474,7 @@ impl ObjectInterface for MemDirectoryInterface {
477474
478475#[ derive( Debug ) ]
479476pub ( crate ) struct MemDirectory {
480- inner :
481- Arc < RwLock < BTreeMap < String , Box < dyn VfsNode + core:: marker:: Send + core:: marker:: Sync > > > > ,
477+ inner : Arc < RwLock < MemDirectoryMap > > ,
482478 attr : FileAttr ,
483479}
484480
@@ -807,15 +803,16 @@ impl VfsNode for MemDirectory {
807803 block_on (
808804 async {
809805 if let Some ( component) = components. pop ( ) {
810- let name = String :: from ( component) ;
811-
812806 if components. is_empty ( ) {
813807 let file = RomFile :: new ( data, mode) ;
814- self . inner . write ( ) . await . insert ( name, Box :: new ( file) ) ;
808+ self . inner
809+ . write ( )
810+ . await
811+ . insert ( component. to_owned ( ) , Box :: new ( file) ) ;
815812 return Ok ( ( ) ) ;
816813 }
817814
818- if let Some ( directory) = self . inner . read ( ) . await . get ( & name ) {
815+ if let Some ( directory) = self . inner . read ( ) . await . get ( component ) {
819816 return directory. traverse_create_file ( components, data, mode) ;
820817 }
821818 }
0 commit comments