Skip to main content

Sequence

Struct Sequence 

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

Sequence.

Sequences are ordered collections of expressions that can be used to match identifiers. Sequences can contain gaps, which allow to implement flexible matching of identifiers with varying numbers of elements, including but not limited to prefix and suffix matching.

Each Element of a Sequence can either be an Expression or a Gap. An Expression is a logical combination of one or multiple Id and Selector instances, while a Gap represents a wildcard that can match any number of elements, including zero.

The following convenience constructors are provided:

§Examples

use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);

Implementations§

Source§

impl Sequence

Source

pub fn prefix<T>(sequence: T) -> Self
where T: Into<Self>,

Creates a sequence where the given elements are a prefix.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence for a prefix
let sequence = Sequence::prefix([
    selector!(location = "zensical.toml")?,
]);
Source

pub fn suffix<T>(sequence: T) -> Self
where T: Into<Self>,

Creates a sequence where the given elements are a suffix.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence for a suffix
let sequence = Sequence::suffix([
    selector!(location = "**/*.md")?,
]);
Source

pub fn iter(&self) -> Iter<'_, Element>

Creates an iterator over the sequence.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);

// Create iterator over sequence
for element in sequence.iter() {
    println!("{element:?}");
}
Source§

impl Sequence

Source

pub fn len(&self) -> usize

Returns the number of elements.

Source

pub fn is_empty(&self) -> bool

Returns whether there are any elements.

Trait Implementations§

Source§

impl Clone for Sequence

Source§

fn clone(&self) -> Sequence

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 Sequence

Source§

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

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

impl Default for Sequence

Source§

fn default() -> Self

Creates a sequence that matches everything.

§Examples
use zrx_id::Sequence;

// Create empty sequence
let sequence = Sequence::default();
assert!(!sequence.is_empty());
Source§

impl Eq for Sequence

Source§

impl<E> From<&[E]> for Sequence
where E: Into<Element> + Clone,

Source§

fn from(value: &[E]) -> Self

Creates a sequence from a slice of elements.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from(&[
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
][..]);
Source§

impl<E> From<E> for Sequence
where E: Into<Element>,

Source§

fn from(value: E) -> Self

Creates a sequence from an element.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from(
    selector!(location = "zensical.toml")?,
);
Source§

impl<E> From<Vec<E>> for Sequence
where E: Into<Element>,

Source§

fn from(value: Vec<E>) -> Self

Creates a sequence from a vector of elements.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from(vec![
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);
Source§

impl<E, const N: usize> From<[E; N]> for Sequence
where E: Into<Element>,

Source§

fn from(value: [E; N]) -> Self

Creates a sequence from a slice of elements.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);
Source§

impl<E> FromIterator<E> for Sequence
where E: Into<Element>,

Source§

fn from_iter<T>(iter: T) -> Self
where T: IntoIterator<Item = E>,

Creates a sequence from an iterator.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence from iterator
let sequence = Sequence::from_iter([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);
Source§

impl<'a> IntoIterator for &'a Sequence

Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator over the sequence.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);

// Create iterator over sequence
for element in &sequence {
    println!("{element:?}");
}
Source§

type Item = &'a Element

The type of the elements being iterated over.
Source§

type IntoIter = Iter<'a, Element>

Which kind of iterator are we turning this into?
Source§

impl IntoIterator for Sequence

Source§

fn into_iter(self) -> Self::IntoIter

Creates a consuming iterator over the sequence.

§Examples
use zrx_id::{selector, Sequence};

// Create sequence
let sequence = Sequence::from([
    selector!(location = "zensical.toml")?,
    selector!(location = "**/*.md")?,
]);

// Create iterator over sequence
for element in sequence {
    println!("{element:?}");
}
Source§

type Item = Element

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<<Sequence as IntoIterator>::Item>

Which kind of iterator are we turning this into?
Source§

impl PartialEq for Sequence

Source§

fn eq(&self, other: &Sequence) -> 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 Sequence

Source§

impl ToSpecificity for Sequence

Source§

fn to_specificity(&self) -> Specificity

Computes the specificity of the sequence.

§Examples
use zrx_id::selector;
use zrx_id::sequence::Sequence;
use zrx_id::specificity::ToSpecificity;

// Create sequence and compute specificity
let sequence = Sequence::from(selector!(location = "**/*.md")?);
assert_eq!(sequence.to_specificity(), (0, 1, 1, 3).into());
Source§

impl Value for Sequence

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> 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> IntoResult<T> for T
where T: Value,

Source§

fn into_result(self) -> Result<T, Error>

Converts any value into a step result.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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<K, V> TryAsStorage<K> for V
where K: Key, V: Value,

Source§

fn try_as_storage( item: &(dyn Any + 'static), ) -> Result<<V as TryAsStorage<K>>::Target<'_>, Error>

Attempts to convert into a storage reference.

§Errors

The following errors might be returned:

§Examples
use std::any::Any;
use zrx_storage::convert::TryAsStorage;
use zrx_storage::Storage;

// Create storage and initial state
let mut storage = Storage::default();
storage.insert("key", 42);

// Obtain type-erased reference
let item: &dyn Any = &storage;

// Obtain storage reference
let storage = <i32>::try_as_storage(item)?;
Source§

type Target<'a> = &'a Storage<K, V>

Target type of conversion.
Source§

impl<K, V> TryAsStorageMut<K> for V
where K: Key, V: Value,

Source§

fn try_as_storage_mut( item: &mut (dyn Any + 'static), ) -> Result<<V as TryAsStorageMut<K>>::Target<'_>, Error>

Attempts to convert into a mutable storage reference.

§Errors

The following errors might be returned:

§Examples
use std::any::Any;
use zrx_storage::convert::TryAsStorageMut;
use zrx_storage::Storage;

// Create storage and initial state
let mut storage = Storage::default();
storage.insert("key", 42);

// Obtain mutable type-erased reference
let item: &mut dyn Any = &mut storage;

// Obtain mutable storage reference
let storage = <i32>::try_as_storage_mut(item)?;
Source§

type Target<'a> = &'a mut Storage<K, V>

Target type of conversion.
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.
Source§

impl<T> Value for T
where T: Debug + Eq + 'static,