refactor(tvix/eval): use &Path instead of PathBuf
This allows getting rid of some clones in eval/src/vm/generators.rs. Change-Id: I330390307d3bcfeef19c98954c753ee55b1ccee3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8604 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
		
							parent
							
								
									b4bb9062ea
								
							
						
					
					
						commit
						11771a06ae
					
				
					 5 changed files with 19 additions and 19 deletions
				
			
		|  | @ -47,7 +47,7 @@ impl EvalIO for NixCompatIO { | |||
|     } | ||||
| 
 | ||||
|     // Pass the rest of the functions through to `Self::underlying`
 | ||||
|     fn path_exists(&mut self, path: PathBuf) -> Result<bool, io::Error> { | ||||
|     fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> { | ||||
|         if path.starts_with("/__corepkgs__") { | ||||
|             return Ok(true); | ||||
|         } | ||||
|  | @ -55,7 +55,7 @@ impl EvalIO for NixCompatIO { | |||
|         self.underlying.path_exists(path) | ||||
|     } | ||||
| 
 | ||||
|     fn read_to_string(&mut self, path: PathBuf) -> Result<String, io::Error> { | ||||
|     fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> { | ||||
|         // Bundled version of corepkgs/fetchurl.nix. This workaround
 | ||||
|         // is similar to what cppnix does for passing the path
 | ||||
|         // through.
 | ||||
|  | @ -69,7 +69,7 @@ impl EvalIO for NixCompatIO { | |||
|         self.underlying.read_to_string(path) | ||||
|     } | ||||
| 
 | ||||
|     fn read_dir(&mut self, path: PathBuf) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|     fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|         self.underlying.read_dir(path) | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> { | |||
|         Ok(imported_path) | ||||
|     } | ||||
| 
 | ||||
|     fn path_exists(&mut self, path: PathBuf) -> Result<bool, io::Error> { | ||||
|     fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> { | ||||
|         if path.starts_with("/__corepkgs__") { | ||||
|             return Ok(true); | ||||
|         } | ||||
|  | @ -56,7 +56,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> { | |||
|         self.actual.path_exists(path) | ||||
|     } | ||||
| 
 | ||||
|     fn read_to_string(&mut self, path: PathBuf) -> Result<String, io::Error> { | ||||
|     fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> { | ||||
|         // Bundled version of corepkgs/fetchurl.nix. The counterpart
 | ||||
|         // of this happens in `main`, where the `nix_path` of the
 | ||||
|         // evaluation has `nix=/__corepkgs__` added to it.
 | ||||
|  | @ -73,7 +73,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> { | |||
|         self.actual.read_to_string(path) | ||||
|     } | ||||
| 
 | ||||
|     fn read_dir(&mut self, path: PathBuf) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|     fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|         self.actual.read_dir(path) | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -33,14 +33,14 @@ pub enum FileType { | |||
| /// Defines how filesystem interaction occurs inside of tvix-eval.
 | ||||
| pub trait EvalIO { | ||||
|     /// Verify whether the file at the specified path exists.
 | ||||
|     fn path_exists(&mut self, path: PathBuf) -> Result<bool, io::Error>; | ||||
|     fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error>; | ||||
| 
 | ||||
|     /// Read the file at the specified path to a string.
 | ||||
|     fn read_to_string(&mut self, path: PathBuf) -> Result<String, io::Error>; | ||||
|     fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error>; | ||||
| 
 | ||||
|     /// Read the directory at the specified path and return the names
 | ||||
|     /// of its entries associated with their [`FileType`].
 | ||||
|     fn read_dir(&mut self, path: PathBuf) -> Result<Vec<(SmolStr, FileType)>, io::Error>; | ||||
|     fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error>; | ||||
| 
 | ||||
|     /// Import the given path. What this means depends on the
 | ||||
|     /// implementation, for example for a `std::io`-based
 | ||||
|  | @ -65,15 +65,15 @@ pub struct StdIO; | |||
| 
 | ||||
| #[cfg(feature = "impure")] | ||||
| impl EvalIO for StdIO { | ||||
|     fn path_exists(&mut self, path: PathBuf) -> Result<bool, io::Error> { | ||||
|     fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> { | ||||
|         path.try_exists() | ||||
|     } | ||||
| 
 | ||||
|     fn read_to_string(&mut self, path: PathBuf) -> Result<String, io::Error> { | ||||
|     fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> { | ||||
|         std::fs::read_to_string(&path) | ||||
|     } | ||||
| 
 | ||||
|     fn read_dir(&mut self, path: PathBuf) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|     fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|         let mut result = vec![]; | ||||
| 
 | ||||
|         for entry in path.read_dir()? { | ||||
|  | @ -108,21 +108,21 @@ impl EvalIO for StdIO { | |||
| pub struct DummyIO; | ||||
| 
 | ||||
| impl EvalIO for DummyIO { | ||||
|     fn path_exists(&mut self, _: PathBuf) -> Result<bool, io::Error> { | ||||
|     fn path_exists(&mut self, _: &Path) -> Result<bool, io::Error> { | ||||
|         Err(io::Error::new( | ||||
|             io::ErrorKind::Unsupported, | ||||
|             "I/O methods are not implemented in DummyIO", | ||||
|         )) | ||||
|     } | ||||
| 
 | ||||
|     fn read_to_string(&mut self, _: PathBuf) -> Result<String, io::Error> { | ||||
|     fn read_to_string(&mut self, _: &Path) -> Result<String, io::Error> { | ||||
|         Err(io::Error::new( | ||||
|             io::ErrorKind::Unsupported, | ||||
|             "I/O methods are not implemented in DummyIO", | ||||
|         )) | ||||
|     } | ||||
| 
 | ||||
|     fn read_dir(&mut self, _: PathBuf) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|     fn read_dir(&mut self, _: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> { | ||||
|         Err(io::Error::new( | ||||
|             io::ErrorKind::Unsupported, | ||||
|             "I/O methods are not implemented in DummyIO", | ||||
|  |  | |||
|  | @ -85,7 +85,7 @@ impl NixSearchPathEntry { | |||
|             } | ||||
|         }; | ||||
| 
 | ||||
|         if io.path_exists(path.clone()).map_err(|e| ErrorKind::IO { | ||||
|         if io.path_exists(&path).map_err(|e| ErrorKind::IO { | ||||
|             path: Some(path.clone()), | ||||
|             error: e.into(), | ||||
|         })? { | ||||
|  |  | |||
|  | @ -421,7 +421,7 @@ impl<'o> VM<'o> { | |||
|                         VMRequest::ReadToString(path) => { | ||||
|                             let content = self | ||||
|                                 .io_handle | ||||
|                                 .read_to_string(path.clone()) | ||||
|                                 .read_to_string(&path) | ||||
|                                 .map_err(|e| ErrorKind::IO { | ||||
|                                     path: Some(path), | ||||
|                                     error: e.into(), | ||||
|  | @ -434,7 +434,7 @@ impl<'o> VM<'o> { | |||
|                         VMRequest::PathExists(path) => { | ||||
|                             let exists = self | ||||
|                                 .io_handle | ||||
|                                 .path_exists(path.clone()) | ||||
|                                 .path_exists(&path) | ||||
|                                 .map_err(|e| ErrorKind::IO { | ||||
|                                     path: Some(path), | ||||
|                                     error: e.into(), | ||||
|  | @ -448,7 +448,7 @@ impl<'o> VM<'o> { | |||
|                         VMRequest::ReadDir(path) => { | ||||
|                             let dir = self | ||||
|                                 .io_handle | ||||
|                                 .read_dir(path.clone()) | ||||
|                                 .read_dir(&path) | ||||
|                                 .map_err(|e| ErrorKind::IO { | ||||
|                                     path: Some(path), | ||||
|                                     error: e.into(), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue