@@ -16,10 +16,7 @@ use crate::{fmt, io, iter, mem, ptr, slice, str};
1616
1717const  TMPBUF_SZ :  usize  = 128 ; 
1818
19- const  PATH_SEPARATOR :  u8  = cfg_select !  { 
20-     target_os = "redox"  => b';' , 
21-     _ => b':' , 
22- } ; 
19+ const  PATH_SEPARATOR :  u8  = if  cfg ! ( target_os = "redox" )  {  b';'  }  else  {  b':'  } ; 
2320
2421unsafe  extern  "C"  { 
2522    #[ cfg( not( any( target_os = "dragonfly" ,  target_os = "vxworks" ,  target_os = "rtems" ) ) ) ]  
@@ -189,33 +186,14 @@ pub fn chdir(p: &path::Path) -> io::Result<()> {
189186    if  result == 0  {  Ok ( ( ) )  }  else  {  Err ( io:: Error :: last_os_error ( ) )  } 
190187} 
191188
192- pub  struct  SplitPaths < ' a >  { 
193-     iter :  iter:: Map < slice:: Split < ' a ,  u8 ,  fn ( & u8 )  -> bool > ,  fn ( & ' a  [ u8 ] )  -> PathBuf > , 
194- } 
189+ pub  type  SplitPaths < ' a >  = impl  Iterator < Item  = PathBuf > ; 
195190
191+ #[ define_opaque( SplitPaths ) ]  
196192pub  fn  split_paths ( unparsed :  & OsStr )  -> SplitPaths < ' _ >  { 
197-     fn  bytes_to_path ( b :  & [ u8 ] )  -> PathBuf  { 
198-         PathBuf :: from ( <OsStr  as  OsStrExt >:: from_bytes ( b) ) 
199-     } 
200-     fn  is_separator ( b :  & u8 )  -> bool  { 
201-         * b == PATH_SEPARATOR 
202-     } 
203-     let  unparsed = unparsed. as_bytes ( ) ; 
204-     SplitPaths  { 
205-         iter :  unparsed
206-             . split ( is_separator as  fn ( & u8 )  -> bool ) 
207-             . map ( bytes_to_path as  fn ( & [ u8 ] )  -> PathBuf ) , 
208-     } 
209- } 
210- 
211- impl < ' a >  Iterator  for  SplitPaths < ' a >  { 
212-     type  Item  = PathBuf ; 
213-     fn  next ( & mut  self )  -> Option < PathBuf >  { 
214-         self . iter . next ( ) 
215-     } 
216-     fn  size_hint ( & self )  -> ( usize ,  Option < usize > )  { 
217-         self . iter . size_hint ( ) 
218-     } 
193+     unparsed
194+         . as_bytes ( ) 
195+         . split ( |& b| b == PATH_SEPARATOR ) 
196+         . map ( |part| PathBuf :: from ( OsStr :: from_bytes ( part) ) ) 
219197} 
220198
221199#[ derive( Debug ) ]  
0 commit comments