pub struct MetadataFilter { /* private fields */ }Expand description
An expression, its matching policy, and its resource limits.
Boolean composition belongs to FilterExpression. This type only binds
an already-built expression to the options and limits used to evaluate it.
§Examples
use qubit_metadata::FilterExpression;
use qubit_metadata::Metadata;
use qubit_metadata::MetadataFilter;
let metadata = Metadata::new().with("tenant", "acme");
let expression = FilterExpression::builder()
.eq("tenant", "acme")
.build()?;
let filter = MetadataFilter::builder().expression(expression).build()?;
assert!(filter.matches(&metadata));Implementations§
Source§impl MetadataFilter
impl MetadataFilter
Sourcepub fn all() -> Self
pub fn all() -> Self
Creates a filter that matches every metadata object.
§Returns
A constant-true filter using default match options and library hard limits.
Sourcepub fn none() -> Self
pub fn none() -> Self
Creates a filter that matches no metadata object.
§Returns
A constant-false filter using default match options and library hard limits.
Sourcepub const fn builder() -> MetadataFilterBuilder
pub const fn builder() -> MetadataFilterBuilder
Creates a builder for a metadata filter.
Sourcepub fn deserialize_with_filter_limits<'de, D>(
deserializer: D,
receiver_limits: FilterLimits,
) -> Result<Self, D::Error>where
D: Deserializer<'de>,
pub fn deserialize_with_filter_limits<'de, D>(
deserializer: D,
receiver_limits: FilterLimits,
) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserializes a filter and validates a receiver-controlled AST bound.
The receiver bound is charged while the AST is being decoded. Callers must separately bound raw input bytes and any deserializer-specific resources before accepting untrusted data.
§Parameters
deserializer- Source of the versioned filter representation.receiver_limits- Local upper bounds applied to the decoded AST.
§Errors
Returns a deserialization error for malformed V1 data or an unsupported
version. The underlying deserializer’s error type receives the
structured filter-limit or policy failure through D::Error::custom;
this generic API cannot return crate::MetadataWireDecodeError
directly.
Sourcepub fn decode_json_slice(input: &[u8]) -> Result<Self, MetadataWireDecodeError>
pub fn decode_json_slice(input: &[u8]) -> Result<Self, MetadataWireDecodeError>
Decodes a strict metadata-filter JSON envelope using the default wire byte and receiver AST limits.
§Parameters
input- Complete untrusted JSON input.
§Returns
The decoded filter.
§Errors
Returns an input-size error before parsing, a nested-value limit error,
UnsupportedVersion for a version mismatch, a structured
filter-contract error, or InvalidJson for malformed strict filter
input and receiver-limit failures found during incremental decoding.
Sourcepub fn decode_json_slice_with_limits(
input: &[u8],
limits: MetadataLimits,
receiver_filter_limits: FilterLimits,
) -> Result<Self, MetadataWireDecodeError>
pub fn decode_json_slice_with_limits( input: &[u8], limits: MetadataLimits, receiver_filter_limits: FilterLimits, ) -> Result<Self, MetadataWireDecodeError>
Decodes a strict metadata-filter JSON envelope after validating both wire-byte and receiver-controlled AST limits.
§Parameters
input- Complete untrusted JSON input.limits- Shared JSON limits for this decoding session.receiver_filter_limits- Local AST limits validated after decoding.
§Returns
The decoded filter constrained by receiver-controlled limits.
§Errors
Returns an input-size error before parsing, UnsupportedVersion for a
version mismatch, a structured filter-contract error in Filter, or
InvalidJson for syntax, strict-envelope, nested value, and
receiver-limit failures. Receiver AST limits are charged while the
expression tree is read; generic JSON traversal is handled by the
shared budget adapter. Individual
JSON strings and embedded value payloads remain bounded by the outer
input-byte limit.
Sourcepub fn to_json_vec(&self) -> Result<Vec<u8>, MetadataWireEncodeError>
pub fn to_json_vec(&self) -> Result<Vec<u8>, MetadataWireEncodeError>
Encodes this filter with the default JSON budget profile.
Sourcepub fn to_json_vec_with_limits(
&self,
limits: JsonEncodeLimits,
) -> Result<Vec<u8>, MetadataWireEncodeError>
pub fn to_json_vec_with_limits( &self, limits: JsonEncodeLimits, ) -> Result<Vec<u8>, MetadataWireEncodeError>
Encodes this filter with caller-provided JSON budgets.
§Parameters
limits- Output and JSON-value budgets for this operation.
§Errors
Returns crate::MetadataWireEncodeError when encoding exceeds a
budget or the filter cannot be represented by the V1 wire format.
Sourcepub fn to_json_writer<W>(
&self,
writer: W,
) -> Result<(), MetadataWireEncodeError>where
W: Write,
pub fn to_json_writer<W>(
&self,
writer: W,
) -> Result<(), MetadataWireEncodeError>where
W: Write,
Encodes this filter to a writer with the default JSON budget profile.
Sourcepub fn to_json_writer_with_limits<W>(
&self,
writer: W,
limits: JsonEncodeLimits,
) -> Result<(), MetadataWireEncodeError>where
W: Write,
pub fn to_json_writer_with_limits<W>(
&self,
writer: W,
limits: JsonEncodeLimits,
) -> Result<(), MetadataWireEncodeError>where
W: Write,
Encodes this filter to a writer with caller-provided JSON budgets.
§Parameters
writer- Destination receiving the compact JSON document.limits- Output and JSON-value budgets for this operation.
§Errors
Returns crate::MetadataWireEncodeError when encoding exceeds a
budget, the filter cannot be represented by the V1 wire format, or the
writer rejects the output.
Sourcepub const fn expression(&self) -> &FilterExpression
pub const fn expression(&self) -> &FilterExpression
Returns the root expression.
Sourcepub const fn options(&self) -> FilterMatchOptions
pub const fn options(&self) -> FilterMatchOptions
Returns the evaluation options.
Sourcepub const fn limits(&self) -> FilterLimits
pub const fn limits(&self) -> FilterLimits
Returns the resource limits.
Trait Implementations§
Source§impl Clone for MetadataFilter
impl Clone for MetadataFilter
Source§fn clone(&self) -> MetadataFilter
fn clone(&self) -> MetadataFilter
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MetadataFilter
impl Debug for MetadataFilter
Source§impl<'de> Deserialize<'de> for MetadataFilter
impl<'de> Deserialize<'de> for MetadataFilter
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserializes a filter using library hard limits as receiver limits.