[−][src]Struct balena_temen::ast::Identifier
An identifier
Examples
networks[0].name
| │ |
| | └ IdentifierValue::Name("name")
| |
| └ IdentifierValue::Index(0)
|
└ IdentifierValue::Name("networks")
persons[boss.id]["name"]
| │ |
| | └ IdentifierValue::Name("name")
| |
| └ IdentifierValue::Identifier(boss.id)
| | |
| | └ IdentifierValue::Name("id")
| |
| └ IdentifierValue::Name("boss")
|
└ IdentifierValue::Name("persons")
this.id
| |
| └ IdentifierValue::Name("id")
|
└ IdentifierValue::This
Fields
values: Vec<IdentifierValue>
List of identifier values (components)
Methods
impl Identifier
[src]
pub fn new(values: Vec<IdentifierValue>) -> Identifier
[src]
pub fn is_canonical(&self) -> bool
[src]
Check if an identifier is canonical
An identifier is considered as canonical if none relative identifier values
(IdentifierValue::This
, IdentifierValue::Super
) are present.
It affects (checks) nested identifiers as well.
Examples
Canonical identifiers.
use balena_temen::ast::*; let identifier: Identifier = "names.wifi".parse().unwrap(); assert!(identifier.is_canonical()); let identifier: Identifier = "names.wifi[first].id".parse().unwrap(); assert!(identifier.is_canonical());
Not canonical identifiers.
use balena_temen::ast::*; let identifier: Identifier = "names.this".parse().unwrap(); assert!(!identifier.is_canonical()); let identifier: Identifier = "names[this.index]".parse().unwrap(); assert!(!identifier.is_canonical());
pub fn canonicalize(&self, position: &Identifier) -> Result<Identifier>
[src]
Returns the canonical, absolute, identifier with all intermediate components normalized and nested identifiers canonicalized.
Nested identifiers (IdentifierValue::Identifier
) are canonicalized
too.
Arguments
position
- An identifier position
Examples
use balena_temen::ast::*; let identifier: Identifier = "names".parse().unwrap(); assert_eq!(identifier.canonicalize(&Identifier::default()).unwrap(), identifier); let identifier: Identifier = "names.this.id.this.super".parse().unwrap(); let canonicalized: Identifier = "names".parse().unwrap(); assert_eq!(identifier.canonicalize(&Identifier::default()).unwrap(), canonicalized); let identifier: Identifier = "super.id".parse().unwrap(); let position: Identifier = "wifi[`zrzka`].ssid".parse().unwrap(); let canonicalized: Identifier = "wifi[`zrzka`].id".parse().unwrap(); assert_eq!(identifier.canonicalize(&position).unwrap(), canonicalized);
pub fn name<S>(self, name: S) -> Identifier where
S: Into<String>,
[src]
S: Into<String>,
Appends IdentifierValue::Name
to the identifier
Arguments
name
- A name (object field, string index)
Examples
use balena_temen::ast::*; let identifier = Identifier::default() .name("wifi") .name("ssid"); let parsed = "wifi.ssid".parse().unwrap(); assert_eq!(identifier, parsed);
pub fn index(self, index: isize) -> Identifier
[src]
Appends IdentifierValue::Index
to the identifier
Arguments
index
- An array index
use balena_temen::ast::*; let identifier = Identifier::default() .name("networks") .index(0); let parsed = "networks[0]".parse().unwrap(); assert_eq!(identifier, parsed);
pub fn identifier(self, identifier: Identifier) -> Identifier
[src]
Appends IdentifierValue::Identifier
to the identifier
Arguments
identifier
- An identifier index
use balena_temen::ast::*; let identifier = Identifier::default() .name("wifi") .identifier(Identifier::default().name("first_wifi_id")); let parsed = "wifi[first_wifi_id]".parse().unwrap(); assert_eq!(identifier, parsed);
pub fn pop(self) -> Result<Identifier>
[src]
Returns Identifier
with the last identifier value removed
Trait Implementations
impl PartialEq<Identifier> for Identifier
[src]
fn eq(&self, other: &Identifier) -> bool
[src]
fn ne(&self, other: &Identifier) -> bool
[src]
impl Clone for Identifier
[src]
fn clone(&self) -> Identifier
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Default for Identifier
[src]
fn default() -> Identifier
[src]
Creates new, empty, identifier
This identifier can be used to refer to the root.
impl Debug for Identifier
[src]
impl FromStr for Identifier
[src]
Auto Trait Implementations
impl Send for Identifier
impl Sync for Identifier
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,