[][src]Struct artichoke_backend::fs::memory::Memory

pub struct Memory { /* fields omitted */ }

Virtual filesystem for sources, extensions, and require metadata.

Memory is a HashMap from paths to an entry struct that contains:

Sources in Memory are only writable via the LoadSources trait. Sources can only be completely replaced.

These APIs are consumed primarily by the Kernel::require implementation in extn::core::kernel::require.

Implementations

impl Memory[src]

#[must_use]pub fn new() -> Self[src]

Create a new in memory virtual filesystem.

Sets the current working directory of the VFS to RUBY_LOAD_PATH for storing Ruby source files. This path is searched by Kernel::require, Kernel::require_relative, and Kernel::load.

#[must_use]pub fn with_working_directory<T>(cwd: T) -> Self where
    T: Into<PathBuf>, 
[src]

Create a new in memory virtual filesystem with the given working directory.

Trait Implementations

impl Debug for Memory[src]

impl Default for Memory[src]

fn default() -> Self[src]

Virtual filesystem with current working directory set to RUBY_LOAD_PATH.

impl Filesystem for Memory[src]

fn is_file(&self, path: &Path) -> bool[src]

Check whether path points to a file in the virtual filesystem.

This API is infallible and will return false for non-existent paths.

fn read_file(&self, path: &Path) -> Result<Cow<'_, [u8]>>[src]

Read file contents for the file at path.

Returns a byte slice of complete file contents. If path is relative, it is absolutized relative to the current working directory of the virtual file system.

Errors

If path does not exist, an io::Error with error kind io::ErrorKind::NotFound is returned.

fn write_file(&mut self, path: &Path, buf: Cow<'static, [u8]>) -> Result<()>[src]

Write file contents into the virtual file system at path.

Writes the full file contents. If any file contents already exist at path, they are replaced. Extension hooks are preserved.

Errors

This API is currently infallible but returns io::Result to reserve the ability to return errors in the future.

fn get_extension(&self, path: &Path) -> Option<ExtensionHook>[src]

Retrieve an extension hook for the file at path.

This API is infallible and will return None for non-existent paths.

fn register_extension(
    &mut self,
    path: &Path,
    extension: ExtensionHook
) -> Result<()>
[src]

Write extension hook into the virtual file system at path.

If any extension hooks already exist at path, they are replaced. File contents are preserved.

Errors

This API is currently infallible but returns io::Result to reserve the ability to return errors in the future.

fn is_required(&self, path: &Path) -> bool[src]

Check whether a file at path has been required already.

This API is infallible and will return false for non-existent paths.

fn mark_required(&mut self, path: &Path) -> Result<()>[src]

Mark a source at path as required on the interpreter.

This metadata is used by Kernel#require and friends to enforce that Ruby sources are only loaded into the interpreter once to limit side effects.

Errors

If path does not exist, an io::Error with error kind io::ErrorKind::NotFound is returned.

Auto Trait Implementations

impl RefUnwindSafe for Memory[src]

impl Send for Memory[src]

impl Sync for Memory[src]

impl Unpin for Memory[src]

impl UnwindSafe for Memory[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]