Struct rerun::dataframe::ResolvedEntityPathFilter
source · pub struct ResolvedEntityPathFilter {
rules: BTreeMap<ResolvedEntityPathRule, RuleEffect>,
}
Expand description
An EntityPathFilter
with all variables Resolved.
ResolvedEntityPathFilter
sorts the rule by specificity of the entity path,
with recursive coming before non-recursive.
This means the last matching rule is also the most specific one.
For instance:
+ /world/**
- /world
- /world/car/**
+ /world/car/driver
The last rule matching /world/car/driver
is + /world/car/driver
, so it is included.
The last rule matching /world/car/hood
is - /world/car/**
, so it is excluded.
The last rule matching /world
is - /world
, so it is excluded.
The last rule matching /world/house
is + /world/**
, so it is included.
Fields§
§rules: BTreeMap<ResolvedEntityPathRule, RuleEffect>
Implementations§
source§impl ResolvedEntityPathFilter
impl ResolvedEntityPathFilter
sourcepub fn unresolved(&self) -> EntityPathFilter
pub fn unresolved(&self) -> EntityPathFilter
Turns the resolved filter back into an unresolved filter.
sourcepub fn iter_unresolved_expressions(&self) -> impl Iterator<Item = String>
pub fn iter_unresolved_expressions(&self) -> impl Iterator<Item = String>
Iterate over the raw expressions of the rules, displaying the raw unresolved expressions.
Note that they are iterated in the order of the resolved rules in contrast to EntityPathFilter::iter_expressions
.
pub fn formatted(&self) -> String
sourcepub fn most_specific_match(&self, path: &EntityPath) -> Option<RuleEffect>
pub fn most_specific_match(&self, path: &EntityPath) -> Option<RuleEffect>
Find the most specific matching rule and return its effect.
If no rule matches, return None
.
sourcepub fn matches(&self, path: &EntityPath) -> bool
pub fn matches(&self, path: &EntityPath) -> bool
Does this filter include the given entity path?
sourcepub fn matches_exactly(&self, entity_path: &EntityPath) -> bool
pub fn matches_exactly(&self, entity_path: &EntityPath) -> bool
Is there a rule for this exact entity path (ignoring subtree)?
sourcepub fn add_rule(&mut self, effect: RuleEffect, rule: ResolvedEntityPathRule)
pub fn add_rule(&mut self, effect: RuleEffect, rule: ResolvedEntityPathRule)
Adds a rule to this filter.
If there’s already an effect for the rule, it is overwritten with the new effect.
sourcepub fn remove_subtree_and_matching_rules(&mut self, entity_path: EntityPath)
pub fn remove_subtree_and_matching_rules(&mut self, entity_path: EntityPath)
Remove a subtree and any existing rules that it would match.
Because most-specific matches win, if we only add a subtree exclusion it can still be overridden by existing inclusions. This method ensures that not only do we add a subtree exclusion, but clear out any existing inclusions or (now redundant) exclusions that would match the subtree.
sourcepub fn remove_rule_for(&mut self, entity_path: &EntityPath)
pub fn remove_rule_for(&mut self, entity_path: &EntityPath)
Remove any rule for the given entity path (ignoring whether or not that rule includes the subtree).
sourcepub fn contains_rule_for_exactly(&self, entity_path: &EntityPath) -> bool
pub fn contains_rule_for_exactly(&self, entity_path: &EntityPath) -> bool
Is there any rule for this entity path?
Whether or not the subtree is included is NOT important.
sourcepub fn is_explicitly_included(&self, entity_path: &EntityPath) -> bool
pub fn is_explicitly_included(&self, entity_path: &EntityPath) -> bool
Is this entity path explicitly included?
Whether or not the subtree is included is NOT important.
sourcepub fn is_explicitly_excluded(&self, entity_path: &EntityPath) -> bool
pub fn is_explicitly_excluded(&self, entity_path: &EntityPath) -> bool
Is this entity path explicitly excluded?
Whether or not the subtree is included is NOT important.
sourcepub fn is_anything_in_subtree_included(&self, path: &EntityPath) -> bool
pub fn is_anything_in_subtree_included(&self, path: &EntityPath) -> bool
Is anything under this path included (including self)?
sourcepub fn is_superset_of(&self, other: &ResolvedEntityPathFilter) -> bool
pub fn is_superset_of(&self, other: &ResolvedEntityPathFilter) -> bool
Checks whether this results of this filter “fully contain” the results of another filter.
If this returns true
there should not exist any EntityPath
for which Self::matches
would return true
and the other filter would return false
for this filter.
This check operates purely on the rule expressions and not the actual entity tree, and will thus not reason about entities included in an actual recording: different queries that are not a superset of each other may still query the same entities in given recording.
This is a conservative estimate, and may return false
in situations where the
query does in fact cover the other query. However, it should never return true
in a case where the other query would not be fully covered.
sourcepub fn rules(
&self,
) -> impl Iterator<Item = (&ResolvedEntityPathRule, &RuleEffect)>
pub fn rules( &self, ) -> impl Iterator<Item = (&ResolvedEntityPathRule, &RuleEffect)>
Iterate over all rules in the filter.
Trait Implementations§
source§impl Clone for ResolvedEntityPathFilter
impl Clone for ResolvedEntityPathFilter
source§fn clone(&self) -> ResolvedEntityPathFilter
fn clone(&self) -> ResolvedEntityPathFilter
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ResolvedEntityPathFilter
impl Debug for ResolvedEntityPathFilter
source§impl Default for ResolvedEntityPathFilter
impl Default for ResolvedEntityPathFilter
source§fn default() -> ResolvedEntityPathFilter
fn default() -> ResolvedEntityPathFilter
source§impl Hash for ResolvedEntityPathFilter
impl Hash for ResolvedEntityPathFilter
source§impl PartialEq for ResolvedEntityPathFilter
impl PartialEq for ResolvedEntityPathFilter
source§fn eq(&self, other: &ResolvedEntityPathFilter) -> bool
fn eq(&self, other: &ResolvedEntityPathFilter) -> bool
self
and other
values to be equal, and is used
by ==
.impl Eq for ResolvedEntityPathFilter
impl StructuralPartialEq for ResolvedEntityPathFilter
Auto Trait Implementations§
impl Freeze for ResolvedEntityPathFilter
impl RefUnwindSafe for ResolvedEntityPathFilter
impl Send for ResolvedEntityPathFilter
impl Sync for ResolvedEntityPathFilter
impl Unpin for ResolvedEntityPathFilter
impl UnwindSafe for ResolvedEntityPathFilter
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.