Struct artichoke_backend::load_path::Memory[][src]

pub struct Memory { /* fields omitted */ }
Expand description

Virtual filesystem for sources, extensions, and require metadata.

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

  • A bit for whether the path that points to the entry has been required before.
  • Optional binary content representing Ruby source code.
  • Optional hook to a Rust function to be executed on require (similar to a MRI C extension rubygem).

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

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.

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

Check whether path points to a file in the virtual filesystem and return the absolute path if it exists.

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

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

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

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.

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.

Retrieve an extension hook for the file at path.

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

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.

Check whether a file at path has been required already.

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

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.

Trait Implementations

Formats the value using the given formatter. Read more

Virtual filesystem with current working directory set to RUBY_LOAD_PATH.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.