Enum mz_sql::plan::HirRelationExpr

source ·
pub enum HirRelationExpr {
Show 15 variants Constant { rows: Vec<Row>, typ: RelationType, }, Get { id: Id, typ: RelationType, }, LetRec { limit: Option<LetRecLimit>, bindings: Vec<(String, LocalId, HirRelationExpr, RelationType)>, body: Box<HirRelationExpr>, }, Let { name: String, id: LocalId, value: Box<HirRelationExpr>, body: Box<HirRelationExpr>, }, Project { input: Box<HirRelationExpr>, outputs: Vec<usize>, }, Map { input: Box<HirRelationExpr>, scalars: Vec<HirScalarExpr>, }, CallTable { func: TableFunc, exprs: Vec<HirScalarExpr>, }, Filter { input: Box<HirRelationExpr>, predicates: Vec<HirScalarExpr>, }, Join { left: Box<HirRelationExpr>, right: Box<HirRelationExpr>, on: HirScalarExpr, kind: JoinKind, }, Reduce { input: Box<HirRelationExpr>, group_key: Vec<usize>, aggregates: Vec<AggregateExpr>, expected_group_size: Option<u64>, }, Distinct { input: Box<HirRelationExpr>, }, TopK { input: Box<HirRelationExpr>, group_key: Vec<usize>, order_key: Vec<ColumnOrder>, limit: Option<HirScalarExpr>, offset: usize, expected_group_size: Option<u64>, }, Negate { input: Box<HirRelationExpr>, }, Threshold { input: Box<HirRelationExpr>, }, Union { base: Box<HirRelationExpr>, inputs: Vec<HirRelationExpr>, },
}
Expand description

Just like mz_expr::MirRelationExpr, except where otherwise noted below.

Variants§

§

Constant

Fields

§rows: Vec<Row>
§

Get

Fields

§id: Id
§

LetRec

Mutually recursive CTE

Fields

§limit: Option<LetRecLimit>

Maximum number of iterations to evaluate. If None, then there is no limit.

§bindings: Vec<(String, LocalId, HirRelationExpr, RelationType)>

List of bindings all of which are in scope of each other.

§body: Box<HirRelationExpr>

Result of the AST node.

§

Let

CTE

Fields

§name: String
§id: LocalId

The identifier to be used in Get variants to retrieve value.

§value: Box<HirRelationExpr>

The collection to be bound to name.

§body: Box<HirRelationExpr>

The result of the Let, evaluated with name bound to value.

§

Project

Fields

§outputs: Vec<usize>
§

Map

Fields

§

CallTable

Fields

§

Filter

Fields

§predicates: Vec<HirScalarExpr>
§

Join

Unlike MirRelationExpr, we haven’t yet compiled LeftOuter/RightOuter/FullOuter joins away into more primitive exprs

§

Reduce

Unlike MirRelationExpr, when key is empty AND input is empty this returns a single row with the aggregates evaluated over empty groups, rather than returning zero rows

Fields

§group_key: Vec<usize>
§aggregates: Vec<AggregateExpr>
§expected_group_size: Option<u64>
§

Distinct

Fields

§

TopK

Groups and orders within each group, limiting output.

Fields

§input: Box<HirRelationExpr>

The source collection.

§group_key: Vec<usize>

Column indices used to form groups.

§order_key: Vec<ColumnOrder>

Column indices used to order rows within groups.

§limit: Option<HirScalarExpr>

Number of records to retain

§offset: usize

Number of records to skip

§expected_group_size: Option<u64>

User-supplied hint: how many rows will have the same group key.

§

Negate

Fields

§

Threshold

Keep rows from a dataflow where the row counts are positive.

Fields

§

Union

Implementations§

source§

impl HirRelationExpr

source

fn fmt_virtual_syntax( &self, f: &mut Formatter<'_>, ctx: &mut PlanRenderingContext<'_, HirRelationExpr>, ) -> Result

source

fn fmt_raw_syntax( &self, f: &mut Formatter<'_>, ctx: &mut PlanRenderingContext<'_, HirRelationExpr>, ) -> Result

source§

impl<'a> HirRelationExpr

source§

impl HirRelationExpr

source

pub fn typ( &self, outers: &[RelationType], params: &BTreeMap<usize, ScalarType>, ) -> RelationType

source

pub fn arity(&self) -> usize

source

pub fn as_const(&self) -> Option<(&Vec<Row>, &RelationType)>

If self is a constant, return the value and the type, otherwise None.

source

pub fn is_correlated(&self) -> bool

Reports whether this expression contains a column reference to its direct parent scope.

source

pub fn is_join_identity(&self) -> bool

source

pub fn project(self, outputs: Vec<usize>) -> Self

source

pub fn map(self, scalars: Vec<HirScalarExpr>) -> Self

source

pub fn filter(self, preds: Vec<HirScalarExpr>) -> Self

source

pub fn reduce( self, group_key: Vec<usize>, aggregates: Vec<AggregateExpr>, expected_group_size: Option<u64>, ) -> Self

source

pub fn top_k( self, group_key: Vec<usize>, order_key: Vec<ColumnOrder>, limit: Option<HirScalarExpr>, offset: usize, expected_group_size: Option<u64>, ) -> Self

source

pub fn negate(self) -> Self

source

pub fn distinct(self) -> Self

source

pub fn threshold(self) -> Self

source

pub fn union(self, other: Self) -> Self

source

pub fn exists(self) -> HirScalarExpr

source

pub fn select(self) -> HirScalarExpr

source

pub fn join( self, right: HirRelationExpr, on: HirScalarExpr, kind: JoinKind, ) -> HirRelationExpr

source

pub fn take(&mut self) -> HirRelationExpr

source

pub fn visit<'a, F>(&'a self, depth: usize, f: &mut F)
where F: FnMut(&'a Self, usize),

👎Deprecated: Use Visit::visit_post.
source

pub fn visit_fallible<'a, F, E>( &'a self, depth: usize, f: &mut F, ) -> Result<(), E>
where F: FnMut(&'a Self, usize) -> Result<(), E>,

👎Deprecated: Use Visit::try_visit_post.
source

pub fn visit1<'a, F, E>(&'a self, depth: usize, f: F) -> Result<(), E>
where F: FnMut(&'a Self, usize) -> Result<(), E>,

👎Deprecated: Use VisitChildren<HirRelationExpr>::try_visit_children instead.
source

pub fn visit_mut<F>(&mut self, depth: usize, f: &mut F)
where F: FnMut(&mut Self, usize),

👎Deprecated: Use Visit::visit_mut_post instead.
source

pub fn visit_mut_fallible<F, E>( &mut self, depth: usize, f: &mut F, ) -> Result<(), E>
where F: FnMut(&mut Self, usize) -> Result<(), E>,

👎Deprecated: Use Visit::try_visit_mut_post instead.
source

pub fn visit1_mut<'a, F, E>(&'a mut self, depth: usize, f: F) -> Result<(), E>
where F: FnMut(&'a mut Self, usize) -> Result<(), E>,

👎Deprecated: Use VisitChildren<HirRelationExpr>::try_visit_mut_children instead.
source

pub fn visit_scalar_expressions<F, E>( &self, depth: usize, f: &mut F, ) -> Result<(), E>
where F: FnMut(&HirScalarExpr, usize) -> Result<(), E>,

👎Deprecated: Use a combination of Visit and VisitChildren methods.

Visits all scalar expressions within the sub-tree of the given relation.

The depth argument should indicate the subquery nesting depth of the expression, which will be incremented when entering the RHS of a join or a subquery and presented to the supplied function f.

source

pub fn visit_scalar_expressions_mut<F, E>( &mut self, depth: usize, f: &mut F, ) -> Result<(), E>
where F: FnMut(&mut HirScalarExpr, usize) -> Result<(), E>,

👎Deprecated: Use a combination of Visit and VisitChildren methods.

Like visit_scalar_expressions, but permits mutating the expressions.

source

pub fn visit_columns<F>(&self, depth: usize, f: &mut F)
where F: FnMut(usize, &ColumnRef),

👎Deprecated: Redefine this based on the Visit and VisitChildren methods.

Visits the column references in this relation expression.

The depth argument should indicate the subquery nesting depth of the expression, which will be incremented when entering the RHS of a join or a subquery and presented to the supplied function f.

source

pub fn visit_columns_mut<F>(&mut self, depth: usize, f: &mut F)
where F: FnMut(usize, &mut ColumnRef),

👎Deprecated: Redefine this based on the Visit and VisitChildren methods.

Like visit_columns, but permits mutating the column references.

source

pub fn bind_parameters(&mut self, params: &Params) -> Result<(), PlanError>

Replaces any parameter references in the expression with the corresponding datum from params.

source

pub fn splice_parameters(&mut self, params: &[HirScalarExpr], depth: usize)

See the documentation for HirScalarExpr::splice_parameters.

source

pub fn constant(rows: Vec<Vec<Datum<'_>>>, typ: RelationType) -> Self

Constructs a constant collection from specific rows and schema.

source

pub fn finish_maintained( &mut self, finishing: &mut RowSetFinishing<HirScalarExpr>, group_size_hints: GroupSizeHints, )

A RowSetFinishing can only be directly applied to the result of a one-shot select. This function is concerned with maintained queries, e.g., an index or materialized view. Instead of directly applying the given RowSetFinishing, it converts the RowSetFinishing to a TopK, which it then places at the top of self. Additionally, it turns the given finishing into a trivial finishing.

source

pub fn could_run_expensive_function(&self) -> bool

The HirRelationExpr is considered potentially expensive if and only if at least one of the following conditions is true:

  • It contains at least one CallTable or a Reduce operator.
  • It contains at least one HirScalarExpr with a function call.

!!!WARNING!!!: this method has an MirRelationExpr counterpart. The two should be kept in sync w.r.t. HIR ⇒ MIR lowering!

source

pub fn contains_temporal(&self) -> Result<bool, RecursionLimitError>

Whether the expression contains an UnmaterializableFunc::MzNow call.

source§

impl HirRelationExpr

source

pub fn lower<C: Into<Config>>( self, config: C, metrics: Option<&OptimizerMetrics>, ) -> Result<MirRelationExpr, PlanError>

Rewrite self into a MirRelationExpr. This requires rewriting all correlated subqueries (nested HirRelationExprs) into flat queries

source

fn applied_to( self, id_gen: &mut IdGen, get_outer: MirRelationExpr, col_map: &ColumnMap, cte_map: &mut BTreeMap<LocalId, CteDesc>, context: &Context<'_>, ) -> Result<MirRelationExpr, PlanError>

Return a MirRelationExpr which evaluates self once for each row of get_outer.

For uncorrelated self, this should be the cross-product between get_outer and self. When self references columns of get_outer, much more work needs to occur.

The col_map argument contains mappings to some of the columns of get_outer, though perhaps not all of them. It should be used as the basis of resolving column references, but care must be taken when adding new columns that get_outer.arity() is where they will start, rather than any function of col_map.

The get_outer expression should be a Get with no duplicate rows, describing the distinct assignment of values to outer rows.

Trait Implementations§

source§

impl Clone for HirRelationExpr

source§

fn clone(&self) -> HirRelationExpr

Returns a copy 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 CollectionPlan for HirRelationExpr

source§

fn depends_on_into(&self, out: &mut BTreeSet<GlobalId>)

Collects the set of global identifiers from dataflows referenced in Get.
source§

fn depends_on(&self) -> BTreeSet<GlobalId>

Returns the set of global identifiers from dataflows referenced in Get. Read more
source§

impl Debug for HirRelationExpr

source§

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

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

impl<'de> Deserialize<'de> for HirRelationExpr

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl DisplayText<PlanRenderingContext<'_, HirRelationExpr>> for HirRelationExpr

source§

fn fmt_text( &self, f: &mut Formatter<'_>, ctx: &mut PlanRenderingContext<'_, HirRelationExpr>, ) -> Result

source§

impl<'a> Explain<'a> for HirRelationExpr

§

type Context = ExplainContext<'a>

The type of the immutable context in which the explanation will be rendered.
§

type Text = ExplainSinglePlan<'a, HirRelationExpr>

The explanation type produced by a successful Explain::explain_text call.
§

type Json = ExplainSinglePlan<'a, HirRelationExpr>

The explanation type produced by a successful Explain::explain_json call.
§

type Dot = UnsupportedFormat

The explanation type produced by a successful Explain::explain_json call.
source§

fn explain_text( &'a mut self, context: &'a Self::Context, ) -> Result<Self::Text, ExplainError>

Construct a Result::Ok of the Explain::Text format from the config and the context. Read more
source§

fn explain_json( &'a mut self, context: &'a Self::Context, ) -> Result<Self::Json, ExplainError>

Construct a Result::Ok of the Explain::Json format from the config and the context. Read more
source§

fn explain( &'a mut self, format: &'a ExplainFormat, context: &'a Self::Context, ) -> Result<String, ExplainError>

Explain an instance of Self within the given Explain::Context. Read more
source§

fn explain_dot( &'a mut self, context: &'a Self::Context, ) -> Result<Self::Dot, ExplainError>

Construct a Result::Ok of the Explain::Dot format from the config and the context. Read more
source§

impl Hash for HirRelationExpr

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for HirRelationExpr

source§

fn cmp(&self, other: &HirRelationExpr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for HirRelationExpr

source§

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

source§

fn partial_cmp(&self, other: &HirRelationExpr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for HirRelationExpr

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl VisitChildren<HirRelationExpr> for HirRelationExpr

source§

fn visit_children<F>(&self, f: F)
where F: FnMut(&Self),

Apply an infallible immutable function f to each direct child.
source§

fn visit_mut_children<F>(&mut self, f: F)
where F: FnMut(&mut Self),

Apply an infallible mutable function f to each direct child.
source§

fn try_visit_children<F, E>(&self, f: F) -> Result<(), E>
where F: FnMut(&Self) -> Result<(), E>, E: From<RecursionLimitError>,

Apply a fallible immutable function f to each direct child. Read more
source§

fn try_visit_mut_children<F, E>(&mut self, f: F) -> Result<(), E>

Apply a fallible mutable function f to each direct child. Read more
source§

impl VisitChildren<HirScalarExpr> for HirRelationExpr

source§

fn visit_children<F>(&self, f: F)
where F: FnMut(&HirScalarExpr),

Apply an infallible immutable function f to each direct child.
source§

fn visit_mut_children<F>(&mut self, f: F)
where F: FnMut(&mut HirScalarExpr),

Apply an infallible mutable function f to each direct child.
source§

fn try_visit_children<F, E>(&self, f: F) -> Result<(), E>

Apply a fallible immutable function f to each direct child. Read more
source§

fn try_visit_mut_children<F, E>(&mut self, f: F) -> Result<(), E>
where F: FnMut(&mut HirScalarExpr) -> Result<(), E>, E: From<RecursionLimitError>,

Apply a fallible mutable function f to each direct child. Read more
source§

impl Eq for HirRelationExpr

source§

impl StructuralPartialEq for HirRelationExpr

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> AsAny for T
where T: Any,

source§

fn as_any(&self) -> &(dyn Any + 'static)

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, U> CastInto<U> for T
where U: CastFrom<T>,

source§

fn cast_into(self) -> U

Performs the cast.
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<T> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> CopyAs<T> for T

source§

fn copy_as(self) -> T

source§

impl<T> DynClone for T
where T: Clone,

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

source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromRef<T> for T
where T: Clone,

source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Hashable for T
where T: Hash,

§

type Output = u64

The type of the output value.
source§

fn hashed(&self) -> u64

A well-distributed integer derived from the data.
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T, U> OverrideFrom<Option<&T>> for U
where U: OverrideFrom<T>,

source§

fn override_from(self, layer: &Option<&T>) -> U

Override the configuration represented by Self with values from the given layer.
source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

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> PreferredContainer for T
where T: Ord + Clone + 'static,

§

type Container = Vec<T>

The preferred container for the type.
source§

impl<T> ProgressEventTimestamp for T
where T: Data + Debug + Any,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Upcasts this ProgressEventTimestamp to Any. Read more
source§

fn type_name(&self) -> &'static str

Returns the name of the concrete type of this object. Read more
source§

impl<P, R> ProtoType<R> for P
where R: RustType<P>,

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<'a, S, T> Semigroup<&'a S> for T
where T: Semigroup<S>,

source§

fn plus_equals(&mut self, rhs: &&'a S)

The method of std::ops::AddAssign, for types that do not implement AddAssign.
source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>

source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

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

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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> Visit for T
where T: VisitChildren<T>,

source§

fn visit_post<F>(&self, f: &mut F) -> Result<(), RecursionLimitError>
where F: FnMut(&T),

Post-order immutable infallible visitor for self.
source§

fn visit_post_nolimit<F>(&self, f: &mut F)
where F: FnMut(&T),

👎Deprecated: Use visit_post instead.
Post-order immutable infallible visitor for self. Does not enforce a recursion limit.
source§

fn visit_mut_post<F>(&mut self, f: &mut F) -> Result<(), RecursionLimitError>
where F: FnMut(&mut T),

Post-order mutable infallible visitor for self.
source§

fn visit_mut_post_nolimit<F>(&mut self, f: &mut F)
where F: FnMut(&mut T),

👎Deprecated: Use visit_mut_post instead.
Post-order mutable infallible visitor for self. Does not enforce a recursion limit.
source§

fn try_visit_post<F, E>(&self, f: &mut F) -> Result<(), E>
where F: FnMut(&T) -> Result<(), E>, E: From<RecursionLimitError>,

Post-order immutable fallible visitor for self.
source§

fn try_visit_mut_post<F, E>(&mut self, f: &mut F) -> Result<(), E>
where F: FnMut(&mut T) -> Result<(), E>, E: From<RecursionLimitError>,

Post-order mutable fallible visitor for self.
source§

fn visit_pre<F>(&self, f: &mut F) -> Result<(), RecursionLimitError>
where F: FnMut(&T),

Pre-order immutable infallible visitor for self.
source§

fn visit_pre_with_context<Context, AccFun, Visitor>( &self, init: Context, acc_fun: &mut AccFun, visitor: &mut Visitor, ) -> Result<(), RecursionLimitError>
where Context: Clone, AccFun: FnMut(Context, &T) -> Context, Visitor: FnMut(&Context, &T),

Pre-order immutable infallible visitor for self, which also accumulates context information along the path from the root to the current node’s parent. acc_fun is a similar closure as in fold. The accumulated context is passed to the visitor, along with the current node. Read more
source§

fn visit_pre_nolimit<F>(&self, f: &mut F)
where F: FnMut(&T),

👎Deprecated: Use visit_pre instead.
Pre-order immutable infallible visitor for self. Does not enforce a recursion limit.
source§

fn visit_mut_pre<F>(&mut self, f: &mut F) -> Result<(), RecursionLimitError>
where F: FnMut(&mut T),

Pre-order mutable infallible visitor for self.
source§

fn visit_mut_pre_nolimit<F>(&mut self, f: &mut F)
where F: FnMut(&mut T),

👎Deprecated: Use visit_mut_pre instead.
Pre-order mutable infallible visitor for self. Does not enforce a recursion limit.
source§

fn try_visit_pre<F, E>(&self, f: &mut F) -> Result<(), E>
where F: FnMut(&T) -> Result<(), E>, E: From<RecursionLimitError>,

Pre-order immutable fallible visitor for self.
source§

fn try_visit_mut_pre<F, E>(&mut self, f: &mut F) -> Result<(), E>
where F: FnMut(&mut T) -> Result<(), E>, E: From<RecursionLimitError>,

Pre-order mutable fallible visitor for self.
source§

fn visit_pre_post<F1, F2>( &self, pre: &mut F1, post: &mut F2, ) -> Result<(), RecursionLimitError>
where F1: FnMut(&T) -> Option<Vec<&T>>, F2: FnMut(&T),

source§

fn visit_pre_post_nolimit<F1, F2>(&self, pre: &mut F1, post: &mut F2)
where F1: FnMut(&T) -> Option<Vec<&T>>, F2: FnMut(&T),

👎Deprecated: Use visit instead.
A generalization of Visit::visit_pre and Visit::visit_post. Does not enforce a recursion limit. Read more
source§

fn visit_mut_pre_post<F1, F2>( &mut self, pre: &mut F1, post: &mut F2, ) -> Result<(), RecursionLimitError>
where F1: FnMut(&mut T) -> Option<Vec<&mut T>>, F2: FnMut(&mut T),

👎Deprecated: Use visit_mut instead.
source§

fn visit_mut_pre_post_nolimit<F1, F2>(&mut self, pre: &mut F1, post: &mut F2)
where F1: FnMut(&mut T) -> Option<Vec<&mut T>>, F2: FnMut(&mut T),

👎Deprecated: Use visit_mut_pre_post instead.
A generalization of Visit::visit_mut_pre and Visit::visit_mut_post. Does not enforce a recursion limit. Read more
source§

fn visit<V>(&self, visitor: &mut V) -> Result<(), RecursionLimitError>
where V: Visitor<T>,

source§

fn visit_mut<V>(&mut self, visitor: &mut V) -> Result<(), RecursionLimitError>
where V: VisitorMut<T>,

source§

fn try_visit<V, E>(&self, visitor: &mut V) -> Result<(), E>
where V: TryVisitor<T, E>, E: From<RecursionLimitError>,

source§

fn try_visit_mut<V, E>(&mut self, visitor: &mut V) -> Result<(), E>

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
source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

source§

impl<T> Data for T
where T: Clone + 'static,

source§

impl<T> Data for T
where T: Data + Ord + Debug,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> ExchangeData for T
where T: Data + Data,

source§

impl<T> ExchangeData for T
where T: ExchangeData + Ord + Debug,

source§

impl<T> Sequence for T
where T: Eq + Hash,