Variable

Struct Variable 

Source
pub struct Variable {
    pub value: Option<Value>,
    pub last_assigned_location: Option<Location>,
    pub is_exported: bool,
    pub read_only_location: Option<Location>,
    pub quirk: Option<Quirk>,
}
Expand description

Definition of a variable.

The methods of Variable are designed to be used in a method chain, but you usually don’t create a Variable instance directly. Instead, use VariableSet::get_or_new or Env::get_or_create_variable to create a variable in a variable set and obtain a mutable reference to it (VariableRefMut), which allows you to modify the variable.

Fields§

§value: Option<Value>

Value of the variable.

The value is None if the variable has been declared without assignment.

§last_assigned_location: Option<Location>

Optional location where this variable was assigned.

If the current variable value originates from an assignment performed in the shell session, last_assigned_location is the location of the assignment. Otherwise, last_assigned_location is None.

§is_exported: bool

Whether this variable is exported or not.

An exported variable is also referred to as an environment variable.

§read_only_location: Option<Location>

Optional location where this variable was made read-only.

If this variable is not read-only, read_only_location is None. Otherwise, read_only_location is the location of the simple command that executed the readonly built-in that made this variable read-only.

§quirk: Option<Quirk>

Special characteristics of the variable

See Quirk and expand for details.

Implementations§

Source§

impl Variable

Source

pub fn new<S: Into<String>>(value: S) -> Self

Creates a new scalar variable from a string.

The returned variable’s last_assigned_location and read_only_location are None and is_exported is false.

Source

pub fn new_array<I, S>(values: I) -> Self
where I: IntoIterator<Item = S>, S: Into<String>,

Creates a new array variable from a string.

The returned variable’s last_assigned_location and read_only_location are None and is_exported is false.

Source

pub fn new_empty_array() -> Self

Creates a new empty array variable.

The returned variable’s last_assigned_location and read_only_location are None and is_exported is false.

Source

pub fn set_assigned_location(self, location: Location) -> Self

Sets the last assigned location.

This is a convenience function for doing self.last_assigned_location = Some(location) in a method chain.

Source

pub fn export(self) -> Self

Sets the is_exported flag.

This is a convenience function for doing self.is_exported = true in a method chain.

Source

pub fn make_read_only(self, location: Location) -> Self

Makes the variable read-only.

This is a convenience function for doing self.read_only_location = Some(location) in a method chain.

Source

pub const fn is_read_only(&self) -> bool

Whether this variable is read-only or not.

Source

pub fn expand(&self, location: &Location) -> Expansion<'_>

Returns the value of this variable, applying any quirk.

If this variable has no Quirk, this function just returns self.value converted to Expansion. Otherwise, the effect of the quirk is applied to the value and the result is returned.

This function requires the location of the parameter expanding this variable, so that Quirk::LineNumber can yield the line number of the location.

Trait Implementations§

Source§

impl Clone for Variable

Source§

fn clone(&self) -> Variable

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Variable

Source§

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

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

impl Default for Variable

Source§

fn default() -> Variable

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

impl<'a> From<&'a mut Variable> for VariableRefMut<'a>

Source§

fn from(variable: &'a mut Variable) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Variable

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Variable

Source§

impl StructuralPartialEq for Variable

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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.