refactor(tvix/eval): stop borrowing &mut self
This does undo cl/8571. Change-Id: Ib14b4e7404f906e346304b6113860ae811afc94a Reviewed-on: https://cl.tvl.fyi/c/depot/+/8631 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
		
							parent
							
								
									ea48481eb3
								
							
						
					
					
						commit
						d25962b9a4
					
				
					 4 changed files with 26 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -34,7 +34,7 @@ impl EvalIO for NixCompatIO {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    // Pass path imports through to `nix-store --add`
 | 
			
		||||
    fn import_path(&mut self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
    fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
        let path = path.to_owned();
 | 
			
		||||
        if let Some(path) = self
 | 
			
		||||
            .import_cache
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ impl EvalIO for NixCompatIO {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    // Pass the rest of the functions through to `Self::underlying`
 | 
			
		||||
    fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
    fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
        if path.starts_with("/__corepkgs__") {
 | 
			
		||||
            return Ok(true);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ impl EvalIO for NixCompatIO {
 | 
			
		|||
        self.underlying.path_exists(path)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> {
 | 
			
		||||
    fn read_to_string(&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.
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +78,7 @@ impl EvalIO for NixCompatIO {
 | 
			
		|||
        self.underlying.read_to_string(path)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
    fn read_dir(&self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
        self.underlying.read_dir(path)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
 | 
			
		|||
        self.actual.store_dir()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn import_path(&mut self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
    fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
        let imported_path = self.actual.import_path(path)?;
 | 
			
		||||
        self.known_paths
 | 
			
		||||
            .borrow_mut()
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ impl<T: EvalIO> EvalIO for TvixIO<T> {
 | 
			
		|||
        Ok(imported_path)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
    fn path_exists(&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: &Path) -> Result<String, io::Error> {
 | 
			
		||||
    fn read_to_string(&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: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
    fn read_dir(&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: &Path) -> Result<bool, io::Error>;
 | 
			
		||||
    fn path_exists(&self, path: &Path) -> Result<bool, io::Error>;
 | 
			
		||||
 | 
			
		||||
    /// Read the file at the specified path to a string.
 | 
			
		||||
    fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error>;
 | 
			
		||||
    fn read_to_string(&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: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error>;
 | 
			
		||||
    fn read_dir(&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
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ pub trait EvalIO {
 | 
			
		|||
    ///
 | 
			
		||||
    /// This is primarily used in the context of things like coercing
 | 
			
		||||
    /// a local path to a string, or builtins like `path`.
 | 
			
		||||
    fn import_path(&mut self, path: &Path) -> Result<PathBuf, io::Error>;
 | 
			
		||||
    fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error>;
 | 
			
		||||
 | 
			
		||||
    /// Returns the root of the store directory, if such a thing
 | 
			
		||||
    /// exists in the evaluation context.
 | 
			
		||||
| 
						 | 
				
			
			@ -65,15 +65,15 @@ pub struct StdIO;
 | 
			
		|||
 | 
			
		||||
#[cfg(feature = "impure")]
 | 
			
		||||
impl EvalIO for StdIO {
 | 
			
		||||
    fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
    fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
        path.try_exists()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> {
 | 
			
		||||
    fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
 | 
			
		||||
        std::fs::read_to_string(&path)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
    fn read_dir(&self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
        let mut result = vec![];
 | 
			
		||||
 | 
			
		||||
        for entry in path.read_dir()? {
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ impl EvalIO for StdIO {
 | 
			
		|||
 | 
			
		||||
    // this is a no-op for `std::io`, as the user can already refer to
 | 
			
		||||
    // the path directly
 | 
			
		||||
    fn import_path(&mut self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
    fn import_path(&self, path: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
        Ok(path.to_path_buf())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -108,28 +108,28 @@ impl EvalIO for StdIO {
 | 
			
		|||
pub struct DummyIO;
 | 
			
		||||
 | 
			
		||||
impl EvalIO for DummyIO {
 | 
			
		||||
    fn path_exists(&mut self, _: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
    fn path_exists(&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, _: &Path) -> Result<String, io::Error> {
 | 
			
		||||
    fn read_to_string(&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, _: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
    fn read_dir(&self, _: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
        Err(io::Error::new(
 | 
			
		||||
            io::ErrorKind::Unsupported,
 | 
			
		||||
            "I/O methods are not implemented in DummyIO",
 | 
			
		||||
        ))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn import_path(&mut self, _: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
    fn import_path(&self, _: &Path) -> Result<PathBuf, io::Error> {
 | 
			
		||||
        Err(io::Error::new(
 | 
			
		||||
            io::ErrorKind::Unsupported,
 | 
			
		||||
            "I/O methods are not implemented in DummyIO",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,7 +65,7 @@ impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService, NCS: NARCalcula
 | 
			
		|||
    /// return the [crate::proto::node::Node] specified by `sub_path`.
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    fn store_path_to_root_node(
 | 
			
		||||
        &mut self,
 | 
			
		||||
        &self,
 | 
			
		||||
        store_path: &StorePath,
 | 
			
		||||
        sub_path: &Path,
 | 
			
		||||
    ) -> Result<Option<crate::proto::node::Node>, crate::Error> {
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ impl<BS: BlobService, DS: DirectoryService, PS: PathInfoService, NCS: NARCalcula
 | 
			
		|||
    /// care about the [PathInfo].
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    pub fn import_path_with_pathinfo(
 | 
			
		||||
        &mut self,
 | 
			
		||||
        &self,
 | 
			
		||||
        path: &std::path::Path,
 | 
			
		||||
    ) -> Result<crate::proto::PathInfo, io::Error> {
 | 
			
		||||
        // Call [import::ingest_path], which will walk over the given path and return a root_node.
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ impl<
 | 
			
		|||
    > EvalIO for TvixStoreIO<BS, DS, PS, NCS>
 | 
			
		||||
{
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    fn path_exists(&mut self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
    fn path_exists(&self, path: &Path) -> Result<bool, io::Error> {
 | 
			
		||||
        if let Ok((store_path, sub_path)) =
 | 
			
		||||
            StorePath::from_absolute_path_full(&path.to_string_lossy())
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ impl<
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    fn read_to_string(&mut self, path: &Path) -> Result<String, io::Error> {
 | 
			
		||||
    fn read_to_string(&self, path: &Path) -> Result<String, io::Error> {
 | 
			
		||||
        if let Ok((store_path, sub_path)) =
 | 
			
		||||
            StorePath::from_absolute_path_full(&path.to_string_lossy())
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -275,7 +275,7 @@ impl<
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    fn read_dir(&mut self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
    fn read_dir(&self, path: &Path) -> Result<Vec<(SmolStr, FileType)>, io::Error> {
 | 
			
		||||
        if let Ok((store_path, sub_path)) =
 | 
			
		||||
            StorePath::from_absolute_path_full(&path.to_string_lossy())
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -344,7 +344,7 @@ impl<
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    #[instrument(skip(self), ret, err)]
 | 
			
		||||
    fn import_path(&mut self, path: &std::path::Path) -> Result<PathBuf, std::io::Error> {
 | 
			
		||||
    fn import_path(&self, path: &std::path::Path) -> Result<PathBuf, std::io::Error> {
 | 
			
		||||
        let path_info = self.import_path_with_pathinfo(path)?;
 | 
			
		||||
 | 
			
		||||
        // from the [PathInfo], extract the store path (as string).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue