Struct artichoke_backend::load_path::Hybrid

source ·
pub struct Hybrid { /* private fields */ }

Implementations§

source§

impl Hybrid

source

pub fn new() -> Self

Create a new hybrid virtual file system.

This file system allows access to the host file system with an in-memory file system mounted at RUBY_LOAD_PATH.

source

pub fn resolve_file(&self, path: &Path) -> Option<Vec<u8>>

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

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

source

pub fn is_file(&self, path: &Path) -> bool

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

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

source

pub fn read_file(&self, path: &Path) -> Result<Vec<u8>>

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.

source

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

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.

Only the Memory file system at RUBY_LOAD_PATH is writable.

§Errors

If access to the Memory file system returns an error, the error is returned. See Memory::write_file.

source

pub fn get_extension(&self, path: &Path) -> Option<ExtensionHook>

Retrieve an extension hook for the file at path.

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

source

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

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.

This function writes all extensions to the virtual file system. If the given path does not map to the virtual file system, the extension is unreachable.

§Errors

If the given path does not resolve to the virtual file system, an error is returned.

source

pub fn is_required(&self, path: &Path) -> Option<bool>

Check whether a file at path has been required already.

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

source

pub fn mark_required(&mut self, path: &Path) -> Result<()>

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§

source§

impl Debug for Hybrid

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Hybrid

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Hybrid

§

impl RefUnwindSafe for Hybrid

§

impl Send for Hybrid

§

impl Sync for Hybrid

§

impl Unpin for Hybrid

§

impl UnwindSafe for Hybrid

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<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.