Selector

Struct Selector 

Source
pub struct Selector<'a> { /* private fields */ }
Expand description

A selector is the combination of a Key Expression, which defines the set of keys that are relevant to an operation, and a set of Parameters, with a few intended uses:

  • specifying arguments to a queryable, allowing the passing of Remote Procedure Call parameters,
  • filtering by value,
  • filtering by metadata, such as the timestamp of a value,
  • specifying arguments to zenoh when using the REST API.

When in string form, selectors look a lot like a URI, with similar semantics:

  • the key_expr before the first ? must be a valid key expression.
  • the parameters after the first ? should be encoded like the query section of a URL:
    • parameters are separated by ;,
    • the parameter name and value are separated by the first =,
    • in the absence of =, the parameter value is considered to be the empty string,
    • both name and value should use percent-encoding to escape characters,
    • defining a value for the same parameter name twice is considered undefined behavior, with the encouraged behavior being to reject operations when a duplicate parameter is detected.

Zenoh intends to standardize the usage of a set of parameter names. To avoid conflicting with RPC parameters, the Zenoh team has settled on reserving the set of parameter names that start with non-alphanumeric characters.

The full specification for selectors is available here, It includes standardized parameters.

Queryable implementers are encouraged to prefer these standardized parameter names when implementing their associated features, and to prefix their own parameter names to avoid having conflicting parameter names with other queryables.

Here are the currently standardized parameters for Zenoh (check the specification page for the exhaustive list):

  • [unstable] _time: used to express interest in only values dated within a certain time range; values for this parameter must be readable by the Zenoh Time DSL for the value to be considered valid.
  • [unstable] _anyke: used in queries to express interest in replies coming from any key expression. By default, only replies whose key expression matches the query’s key expression are accepted. _anyke disables the query-reply key expression matching check.

Implementations§

Source§

impl<'a> Selector<'a>

Source

pub fn key_expr(&self) -> &KeyExpr<'a>

Get the KeyExpr of this selector.

Source

pub fn parameters(&self) -> &Parameters<'a>

Get the Parameters of this selector.

Source

pub fn split(self) -> (KeyExpr<'a>, Parameters<'a>)

Deconstruct the selector into (KeyExpr, Parameters)

Source

pub fn owned<K, P>(key_expr: K, parameters: P) -> Self
where K: Into<KeyExpr<'a>>, P: Into<Parameters<'a>>,

Builds a new selector which owns keyexpr and parameters

Source

pub fn borrowed( key_expr: &'a KeyExpr<'a>, parameters: &'a Parameters<'a>, ) -> Self

Build a new selector holding references to keyexpr and parameters Useful for printing pairs of keyexpr and parameters in URL-like format

Source

pub fn into_owned(self) -> Selector<'static>

Convert this selector into an owned one.

Trait Implementations§

Source§

impl<'a> Clone for Selector<'a>

Source§

fn clone(&self) -> Selector<'a>

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 Selector<'_>

Source§

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

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

impl Display for Selector<'_>

Source§

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

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

impl<'a> From<&'a KeyExpr<'a>> for Selector<'a>

Source§

fn from(key_selector: &'a KeyExpr<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a OwnedKeyExpr> for Selector<'a>

Source§

fn from(key_selector: &'a OwnedKeyExpr) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a Query> for Selector<'a>

Source§

fn from(q: &'a Query) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a Selector<'a>> for (&'a KeyExpr<'a>, &'a Parameters<'a>)

Source§

fn from(selector: &'a Selector<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&Selector<'a>> for Selector<'a>

Source§

fn from(s: &Selector<'a>) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a keyexpr> for Selector<'a>

Source§

fn from(key_selector: &'a keyexpr) -> Self

Converts to this type from the input type.
Source§

impl<'a, K, P> From<(K, P)> for Selector<'a>
where K: Into<KeyExpr<'a>>, P: Into<Parameters<'a>>,

Source§

fn from((key_expr, parameters): (K, P)) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<KeyExpr<'a>> for Selector<'a>

Source§

fn from(key_selector: KeyExpr<'a>) -> Self

Converts to this type from the input type.
Source§

impl From<OwnedKeyExpr> for Selector<'static>

Source§

fn from(key_selector: OwnedKeyExpr) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<Selector<'a>> for (KeyExpr<'a>, Parameters<'a>)

Source§

fn from(selector: Selector<'a>) -> Self

Converts to this type from the input type.
Source§

impl FromStr for Selector<'static>

Source§

type Err = Box<dyn Error + Sync + Send>

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<'a> PartialEq for Selector<'a>

Source§

fn eq(&self, other: &Selector<'a>) -> 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<'a> TryFrom<&'a String> for Selector<'a>

Source§

type Error = Box<dyn Error + Sync + Send>

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

fn try_from(s: &'a String) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> TryFrom<&'a str> for Selector<'a>

Source§

type Error = Box<dyn Error + Sync + Send>

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

fn try_from(s: &'a str) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<String> for Selector<'_>

Source§

type Error = Box<dyn Error + Sync + Send>

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

fn try_from(s: String) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> Eq for Selector<'a>

Source§

impl<'a> StructuralPartialEq for Selector<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Selector<'a>

§

impl<'a> RefUnwindSafe for Selector<'a>

§

impl<'a> Send for Selector<'a>

§

impl<'a> Sync for Selector<'a>

§

impl<'a> Unpin for Selector<'a>

§

impl<'a> UnwindSafe for Selector<'a>

Blanket Implementations§

Source§

impl<Source> AccessAs for Source

Source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
Source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
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> AsNode<T> for T

Source§

fn as_node(&self) -> &T

Source§

impl<T> AsNodeMut<T> for T

Source§

fn as_node_mut(&mut self) -> &mut T

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

Source§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
Source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
Source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

Source§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
Source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
Source§

impl<T> Includes<End> for T

Source§

type Output = End

The result
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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> Same for T

Source§

type Output = T

Should always be Self
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 = 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more