Struct rerun::dataframe::EntityPathFilter
source · pub struct EntityPathFilter {
rules: BTreeMap<EntityPathRule, RuleEffect>,
}
Expand description
A way to filter a set of EntityPath
s.
This implements as simple set of include/exclude rules:
+ /world/** # add everything…
- /world/roads/** # …but remove all roads…
+ /world/roads/main # …but show main road
If there is multiple matching rules, the most specific rule wins. If there are multiple rules of the same specificity, the last one wins. If no rules match, the path is excluded.
The /**
suffix matches the whole subtree, i.e. self and any child, recursively
(/world/**
matches both /world
and /world/car/driver
).
Other uses of *
are not (yet) supported.
Since variable substitution (and thus path parsing) hasn’t been performed yet,
the rules can not be sorted yet from general to specific, instead they are stored
in alphabetical order.
To expand variables & evaluate the filter, use ResolvedEntityPathFilter
.
Fields§
§rules: BTreeMap<EntityPathRule, RuleEffect>
Implementations§
source§impl EntityPathFilter
impl EntityPathFilter
sourcepub fn iter_expressions(&self) -> impl Iterator<Item = String>
pub fn iter_expressions(&self) -> impl Iterator<Item = String>
Iterates the expressions in alphabetical order.
This is not the order the rules are evaluated in
(use ResolvedEntityPathFilter::iter_unresolved_expressions
for that instead).
sourcepub fn parse_forgiving(rules: &str) -> EntityPathFilter
pub fn parse_forgiving(rules: &str) -> EntityPathFilter
Parse an entity path filter from a string, ignoring any parsing errors.
Example of rules:
+ /world/**
- /world/roads/**
+ /world/roads/main
Each line is a rule.
The first character should be +
or -
. If missing, +
is assumed.
The rest of the line is trimmed and treated as an entity path after variable substitution through Self::resolve_forgiving
/Self::resolve_strict
.
Conflicting rules are resolved by the last rule.
sourcepub fn parse_strict(
rules: &str,
) -> Result<EntityPathFilter, EntityPathFilterError>
pub fn parse_strict( rules: &str, ) -> Result<EntityPathFilter, EntityPathFilterError>
Parse an entity path filter from a string.
Example of rules:
+ /world/**
- /world/roads/**
+ /world/roads/main
Each line is a rule.
The first character should be +
or -
. If missing, +
is assumed.
The rest of the line is trimmed and treated as an entity path after variable substitution through Self::resolve_forgiving
/Self::resolve_strict
.
Conflicting rules are resolved by the last rule.
sourcepub fn from_query_expressions<'a>(
rules: impl IntoIterator<Item = &'a str>,
) -> EntityPathFilter
pub fn from_query_expressions<'a>( rules: impl IntoIterator<Item = &'a str>, ) -> EntityPathFilter
Build a filter from a list of query expressions.
Each item in the iterator should be a query expression.
The first character should be +
or -
. If missing, +
is assumed.
The rest of the expression is trimmed and treated as an entity path.
Conflicting rules are resolved by the last rule.
sourcepub fn add_rule(&mut self, effect: RuleEffect, rule: EntityPathRule)
pub fn add_rule(&mut self, effect: RuleEffect, rule: EntityPathRule)
Adds a rule to this filter.
If there’s already an effect for the rule, it is overwritten with the new effect.
sourcepub fn all() -> EntityPathFilter
pub fn all() -> EntityPathFilter
Creates a filter that accepts everything.
sourcepub fn add_exact(&mut self, path_or_variable: &str)
pub fn add_exact(&mut self, path_or_variable: &str)
Include this path or variable expression, but not the subtree.
sourcepub fn add_exact_entity(&mut self, path: &EntityPath)
pub fn add_exact_entity(&mut self, path: &EntityPath)
Include this entity, but not the subtree.
sourcepub fn add_subtree(&mut self, path_or_variable: &str)
pub fn add_subtree(&mut self, path_or_variable: &str)
Include this entity or variable expression with subtree.
sourcepub fn add_entity_subtree(&mut self, entity_path: &EntityPath)
pub fn add_entity_subtree(&mut self, entity_path: &EntityPath)
Include this entity with subtree.
sourcepub fn single_filter(path_or_variable: &str) -> EntityPathFilter
pub fn single_filter(path_or_variable: &str) -> EntityPathFilter
Creates a new entity path filter that includes only a single path or variable expression.
sourcepub fn single_entity_filter(entity_path: &EntityPath) -> EntityPathFilter
pub fn single_entity_filter(entity_path: &EntityPath) -> EntityPathFilter
Creates a new entity path filter that includes only a single entity.
sourcepub fn subtree_filter(path_or_variable: &str) -> EntityPathFilter
pub fn subtree_filter(path_or_variable: &str) -> EntityPathFilter
Creates a new entity path filter that includes a single subtree.
sourcepub fn subtree_entity_filter(entity_path: &EntityPath) -> EntityPathFilter
pub fn subtree_entity_filter(entity_path: &EntityPath) -> EntityPathFilter
Creates a new entity path filter that includes a single subtree.
To use this with unsubsituted variables, use Self::subtree_filter
instead.
sourcepub fn resolve_forgiving(
&self,
subst_env: &EntityPathSubs,
) -> ResolvedEntityPathFilter
pub fn resolve_forgiving( &self, subst_env: &EntityPathSubs, ) -> ResolvedEntityPathFilter
Resolve variables & parse paths, ignoring any errors.
sourcepub fn resolve_strict(
self,
subst_env: &EntityPathSubs,
) -> Result<ResolvedEntityPathFilter, EntityPathFilterError>
pub fn resolve_strict( self, subst_env: &EntityPathSubs, ) -> Result<ResolvedEntityPathFilter, EntityPathFilterError>
Resolve variables & parse paths, returning an error if any rule cannot be parsed or variable substitution fails.
sourcepub fn resolve_without_substitutions(self) -> ResolvedEntityPathFilter
pub fn resolve_without_substitutions(self) -> ResolvedEntityPathFilter
Resolve variables & parse paths, without any substitutions.
sourcepub fn rules(&self) -> impl Iterator<Item = (&EntityPathRule, &RuleEffect)>
pub fn rules(&self) -> impl Iterator<Item = (&EntityPathRule, &RuleEffect)>
Iterate over all rules in the filter.
Trait Implementations§
source§impl AddAssign for EntityPathFilter
impl AddAssign for EntityPathFilter
source§fn add_assign(&mut self, rhs: EntityPathFilter)
fn add_assign(&mut self, rhs: EntityPathFilter)
The union of all rules
source§impl Clone for EntityPathFilter
impl Clone for EntityPathFilter
source§fn clone(&self) -> EntityPathFilter
fn clone(&self) -> EntityPathFilter
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for EntityPathFilter
impl Debug for EntityPathFilter
source§impl Default for EntityPathFilter
impl Default for EntityPathFilter
source§fn default() -> EntityPathFilter
fn default() -> EntityPathFilter
source§impl Hash for EntityPathFilter
impl Hash for EntityPathFilter
source§impl PartialEq for EntityPathFilter
impl PartialEq for EntityPathFilter
source§fn eq(&self, other: &EntityPathFilter) -> bool
fn eq(&self, other: &EntityPathFilter) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Sum for EntityPathFilter
impl Sum for EntityPathFilter
source§fn sum<I>(iter: I) -> EntityPathFilterwhere
I: Iterator<Item = EntityPathFilter>,
fn sum<I>(iter: I) -> EntityPathFilterwhere
I: Iterator<Item = EntityPathFilter>,
The union of all rules
source§impl TryFrom<&str> for EntityPathFilter
impl TryFrom<&str> for EntityPathFilter
§type Error = EntityPathFilterError
type Error = EntityPathFilterError
source§fn try_from(
value: &str,
) -> Result<EntityPathFilter, <EntityPathFilter as TryFrom<&str>>::Error>
fn try_from( value: &str, ) -> Result<EntityPathFilter, <EntityPathFilter as TryFrom<&str>>::Error>
impl Eq for EntityPathFilter
impl StructuralPartialEq for EntityPathFilter
Auto Trait Implementations§
impl Freeze for EntityPathFilter
impl RefUnwindSafe for EntityPathFilter
impl Send for EntityPathFilter
impl Sync for EntityPathFilter
impl Unpin for EntityPathFilter
impl UnwindSafe for EntityPathFilter
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.