pub trait WorkspaceBackend {
// Required methods
fn logical_cwd(&self) -> String;
fn set_logical_cwd(
&mut self,
path: &str,
) -> Result<(), WorkspaceBackendError>;
fn read_file(
&mut self,
path: &str,
) -> Result<Vec<u8>, WorkspaceBackendError>;
fn write_file(
&mut self,
path: &str,
data: &[u8],
) -> Result<(), WorkspaceBackendError>;
fn list_dir(
&mut self,
path: &str,
) -> Result<Vec<String>, WorkspaceBackendError>;
fn mkdir(&mut self, path: &str) -> Result<(), WorkspaceBackendError>;
fn remove(&mut self, path: &str) -> Result<(), WorkspaceBackendError>;
fn exists(&mut self, path: &str) -> Result<bool, WorkspaceBackendError>;
fn try_resolve_guest_path(
&self,
logical_path: &str,
) -> Result<String, WorkspaceBackendError>;
fn run_rust_tool(
&mut self,
vm_session: &mut SessionHolder,
program: &str,
args: &[String],
) -> Result<ExitStatus, WorkspaceBackendError>;
}Expand description
Virtual workspace for devshell: Mode S (memory) or Mode P (guest-primary).
Required Methods§
fn logical_cwd(&self) -> String
Sourcefn set_logical_cwd(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
fn set_logical_cwd(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when path normalization or backend cwd updates fail.
Sourcefn read_file(&mut self, path: &str) -> Result<Vec<u8>, WorkspaceBackendError>
fn read_file(&mut self, path: &str) -> Result<Vec<u8>, WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when the backend cannot read path.
Sourcefn write_file(
&mut self,
path: &str,
data: &[u8],
) -> Result<(), WorkspaceBackendError>
fn write_file( &mut self, path: &str, data: &[u8], ) -> Result<(), WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when the backend cannot write path.
Sourcefn list_dir(&mut self, path: &str) -> Result<Vec<String>, WorkspaceBackendError>
fn list_dir(&mut self, path: &str) -> Result<Vec<String>, WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when directory listing fails.
Sourcefn mkdir(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
fn mkdir(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when directory creation fails.
Sourcefn remove(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
fn remove(&mut self, path: &str) -> Result<(), WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when remove is unsupported or fails.
Sourcefn exists(&mut self, path: &str) -> Result<bool, WorkspaceBackendError>
fn exists(&mut self, path: &str) -> Result<bool, WorkspaceBackendError>
§Errors
Returns WorkspaceBackendError when existence checks fail unexpectedly.
Sourcefn try_resolve_guest_path(
&self,
logical_path: &str,
) -> Result<String, WorkspaceBackendError>
fn try_resolve_guest_path( &self, logical_path: &str, ) -> Result<String, WorkspaceBackendError>
Mode P: logical path → guest absolute path. Mode S: WorkspaceBackendError::ModeSOnly.
§Errors
Returns WorkspaceBackendError::ModeSOnly in Mode S or mapping failures in Mode P.
Sourcefn run_rust_tool(
&mut self,
vm_session: &mut SessionHolder,
program: &str,
args: &[String],
) -> Result<ExitStatus, WorkspaceBackendError>
fn run_rust_tool( &mut self, vm_session: &mut SessionHolder, program: &str, args: &[String], ) -> Result<ExitStatus, WorkspaceBackendError>
Run rustup / cargo (Mode S: sync VFS↔host/VM). Mode P skeleton: WorkspaceBackendError::Unsupported.
§Errors
Returns WorkspaceBackendError when tool execution/sync is unsupported or fails.