Skip to main content

Variables

Struct Variables 

Source
pub struct Variables { /* private fields */ }
Expand description

Ordered set of channel variables with FreeSWITCH escaping.

A comma is escaped with \,, a backslash and a single quote with as many backslashes as the DialStringTarget’s passes consume, a space at either edge of a value as a \s escaped for the same passes, and a value with other spaces is wrapped in single quotes. This form round-trips through FromStr; what the switch itself decodes depends on which command carries the block and which parser revision reads it, documented in docs/dial-string-format.md.

A key meets the same passes and is escaped the same way, with \= for the = split and an empty '' ahead of one opening ^^.

A value naming a variable (${…}) is left to the switch, which expands it or drops it at install unless origination_nested_vars is true.

§Serde format

Default scope with the comma separator serializes as a flat JSON map: {"key": "value", ...}. Anything else serializes as {"scope": "enterprise", "vars": {"key": "value"}}, carrying a "separator" field only when with_separator chose one. Deserialization accepts both formats; a flat map implies Default scope and the comma. A separator that cannot delimit the block, or that a key or value already contains, is refused at load.

Implementations§

Source§

impl Variables

Source

pub fn new(vars_type: VariablesType) -> Self

Create an empty variable set with the given scope.

Source

pub fn with_vars( vars_type: VariablesType, vars: impl IntoIterator<Item = (impl Into<String>, impl Into<String>)>, ) -> Self

Create from an existing set of key-value pairs.

Source

pub fn with_separator(self, sep: char) -> Result<Self, OriginateError>

Separate the pairs with sep instead of a comma, emitting the block in FreeSWITCH’s ^^<sep> form.

A value expanded from ${...} in a dialplan is substituted before the block is parsed, so no escaping can be inserted into it; choosing a separator none of the values contain is the only way such a value can carry a comma. The separator is given rather than derived, so a block renders the same way whatever its values happen to be that call.

Fails if sep cannot delimit this block, or if a key or value already present contains it. A pair inserted afterwards is not checked: one carrying sep splits into a pair nobody wrote, silently, until insert becomes fallible (docs/next-major.md).

Refused: space, controls, non-ASCII, \, ' and lowercase n r t s, which break the switch’s split or its escapes; either of the block’s brackets, = and ^; $ and {, which dialplan expansion reads as a reference across a pair boundary; | in a [] block.

Source

pub fn separator(&self) -> Option<char>

The ^^ separator this block renders with, if one was chosen.

Source

pub fn insert(&mut self, key: impl Into<String>, value: impl Into<String>)

Insert or overwrite a variable.

Source

pub fn remove(&mut self, key: &str) -> Option<String>

Remove a variable by name, returning its value if it existed.

Source

pub fn get(&self, key: &str) -> Option<&str>

Look up a variable by name.

Source

pub fn is_empty(&self) -> bool

Whether the set contains no variables.

Source

pub fn len(&self) -> usize

Number of variables.

Source

pub fn scope(&self) -> VariablesType

Variable scope (Enterprise, Default, or Channel).

Source

pub fn set_scope(&mut self, scope: VariablesType)

Change the variable scope.

Source

pub fn iter(&self) -> impl Iterator<Item = (&str, &str)>

Iterate over key-value pairs in insertion order.

Source

pub fn iter_mut(&mut self) -> impl Iterator<Item = (&str, &mut String)>

Mutable iterator over key-value pairs in insertion order.

Source

pub fn values_mut(&mut self) -> impl Iterator<Item = &mut String>

Mutable iterator over values in insertion order.

Source§

impl Variables

Source

pub fn display_for( &self, target: impl Into<DialStringTarget>, ) -> VariablesDisplay<'_>

Render for a named carrier or DialStringTarget, rather than the DialStringCarrier::EslApi default that Display uses.

Source§

impl Variables

Source

pub fn parse_for( s: &str, target: impl Into<DialStringTarget>, ) -> Result<Self, OriginateError>

Parse a block written for a named carrier or DialStringTarget, as the switch installs it there: the pairs are read through a port of every pass that target applies, so a block display_for wrote at the same target reads back as built. FromStr uses the DialStringCarrier::EslApi default of Display.

Trait Implementations§

Source§

impl Clone for Variables

Source§

fn clone(&self) -> Self

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 Debug for Variables

Source§

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

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

impl<'de> Deserialize<'de> for Variables

Available on crate feature serde only.
Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Variables

Source§

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

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

impl Eq for Variables

Source§

impl FromStr for Variables

Source§

type Err = OriginateError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl PartialEq for Variables

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for Variables

Available on crate feature serde only.
Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Variables

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.