Skip to main content

Files

Struct Files 

Source
pub struct Files<'a> { /* private fields */ }
Expand description

The ergonomic files accessor returned by Sandbox::files().

Implementations§

Source§

impl<'a> Files<'a>

Source

pub async fn read(&self, path: &str) -> Result<Vec<u8>, SolariError>

Read a file’s raw bytes. It reads in 4 MiB chunks (download), so a large file never travels as one frame; a guest image that predates fs.download is read in one frame (fs.read).

Source

pub async fn download(&self, path: &str) -> Result<Vec<u8>, SolariError>

Read a whole file in 4 MiB chunks (fs.download) until the guest reports the end.

Source

pub async fn upload( &self, path: &str, data: impl AsRef<[u8]>, ) -> Result<(), SolariError>

Write data to a file in 4 MiB chunks (fs.upload): the first call truncates, later calls append at their offset. An empty file is one zero-length call. Unlike write there is no size limit.

Source

pub async fn read_text(&self, path: &str) -> Result<String, SolariError>

Read a file as UTF-8 text.

Source

pub async fn write( &self, path: &str, data: impl AsRef<[u8]>, mode: Option<i64>, ) -> Result<(), SolariError>

Write bytes to a file (fs.write). mode is an optional unix mode. The data travels as one frame, so more than 32 MiB is refused before anything is sent (a frame that large would close the control channel and fail every call on it): use upload.

Source

pub async fn list(&self, path: &str) -> Result<Vec<FsEntry>, SolariError>

List a directory (fs.list).

Source

pub async fn stat(&self, path: &str) -> Result<FsStat, SolariError>

Stat a path (fs.stat).

Source

pub async fn mkdir(&self, path: &str) -> Result<(), SolariError>

Create a directory and parents (fs.mkdir).

Source

pub async fn remove( &self, path: &str, recursive: bool, ) -> Result<(), SolariError>

Remove a path (fs.remove); recursive for directories.

Source

pub async fn rename(&self, from: &str, to: &str) -> Result<(), SolariError>

Rename/move a path (fs.rename).

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for Files<'a>

§

impl<'a> !UnwindSafe for Files<'a>

§

impl<'a> Freeze for Files<'a>

§

impl<'a> Send for Files<'a>

§

impl<'a> Sync for Files<'a>

§

impl<'a> Unpin for Files<'a>

§

impl<'a> UnsafeUnpin for Files<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more