Skip to main content

Directives

Struct Directives 

Source
pub struct Directives {
    pub enabled: bool,
}
Expand description

Emits directives for the wrapper shell, or does nothing when the binary runs outside of it.

Directives go to stderr and are flushed immediately, so they are in place before any prompt that follows. Write errors are ignored: a closed stderr leaves the player’s shell unchanged, which is the only sensible outcome.

Fields§

§enabled: bool

true when SHELLGAME_WRAPPER is set, i.e. a shell function will replay the output.

Implementations§

Source§

impl Directives

Source

pub fn new(enabled: bool) -> Self

Creates an emitter. Pass false outside the wrapper: nobody would replay the lines and they would be printed to the player as noise.

Source

pub fn cd(&self, path: impl AsRef<Path>)

Asks the shell to change its working directory to path.

The shell moves with the plain cd implementation, never through the player-facing hook, so teleports are exempt from level restrictions.

Source

pub fn export( &self, name: &str, value: impl AsRef<OsStr>, ) -> Result<(), InvalidName>

Asks the shell to set and export name=value. The value may be any string or path; its raw bytes are sent.

§Errors

Returns InvalidName (and emits nothing) unless name matches ^[A-Za-z_][A-Za-z0-9_]*$. The name is checked even when directives are disabled, so a mistake surfaces in tests that run outside the wrapper.

Source

pub fn echo(&self, message: impl AsRef<str>)

Asks the shell to print message followed by a newline.

Source

pub fn pwd(&self)

Asks the shell to print its working directory.

Source

pub fn exit(&self)

Asks the shell to close the game shell, for example after the game data was removed.

Trait Implementations§

Source§

impl Clone for Directives

Source§

fn clone(&self) -> Directives

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Directives

Source§

impl Debug for Directives

Source§

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

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

impl Default for Directives

Source§

fn default() -> Directives

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

impl Eq for Directives

Source§

impl PartialEq for Directives

Source§

fn eq(&self, other: &Directives) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Directives

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

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.