pub trait InputNode {
fn type_to_node() -> Node;
fn data_to_node(&self) -> Node;
fn oneof_variant(&self) -> Option<&'static str>;
fn parse_unknown(&self, context: &mut Context<'_>) -> bool;
}Expand description
Trait for all Rust types that represent input tree node types.
Required Methods
fn type_to_node() -> Node
fn type_to_node() -> Node
Creates an empty output node for a protobuf datum of this type.
For primitive types, this fills the value with protobuf’s default.
fn data_to_node(&self) -> Node
fn data_to_node(&self) -> Node
Creates an empty output node for a protobuf datum with this value.
fn oneof_variant(&self) -> Option<&'static str>
fn oneof_variant(&self) -> Option<&'static str>
Returns the name of the selected variant of a oneof field, if this is a rust enum used to represent a oneof field.
fn parse_unknown(&self, context: &mut Context<'_>) -> bool
fn parse_unknown(&self, context: &mut Context<'_>) -> bool
Complete the subtrees of this datum in output that have not already been parsed using UnknownField nodes. Returns whether any such nodes were added.
Implementations on Foreign Types
sourceimpl InputNode for ()
impl InputNode for ()
fn type_to_node() -> Node
fn data_to_node(&self) -> Node
fn oneof_variant(&self) -> Option<&'static str>
fn parse_unknown(&self, _context: &mut Context<'_>) -> bool
Implementors
impl InputNode for substrait_validator::input::proto::substrait::derivation_expression::Kind
impl InputNode for ExchangeKind
impl InputNode for TargetType
impl InputNode for substrait_validator::input::proto::substrait::expression::embedded_function::Kind
impl InputNode for RexType
impl InputNode for substrait_validator::input::proto::substrait::expression::enum::EnumKind
impl InputNode for substrait_validator::input::proto::substrait::expression::field_reference::ReferenceType
impl InputNode for RootType
impl InputNode for LiteralType
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::list_select::list_select_item::Type
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::map_select::Select
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::select::Type
impl InputNode for substrait_validator::input::proto::substrait::expression::reference_segment::ReferenceType
impl InputNode for SubqueryType
impl InputNode for substrait_validator::input::proto::substrait::expression::window_function::bound::Kind
impl InputNode for MappingType
impl InputNode for ArgType
impl InputNode for substrait_validator::input::proto::substrait::function_argument::enum::EnumKind
impl InputNode for substrait_validator::input::proto::substrait::function_signature::aggregate::FinalVariableBehavior
impl InputNode for ArgumentKind
impl InputNode for substrait_validator::input::proto::substrait::function_signature::scalar::FinalVariableBehavior
impl InputNode for substrait_validator::input::proto::substrait::function_signature::window::FinalVariableBehavior
impl InputNode for substrait_validator::input::proto::substrait::parameterized_type::Kind
impl InputNode for IntegerType
impl InputNode for substrait_validator::input::proto::substrait::plan_rel::RelType
impl InputNode for ReadType
impl InputNode for PathType
impl InputNode for substrait_validator::input::proto::substrait::rel::RelType
impl InputNode for EmitKind
impl InputNode for SortKind
impl InputNode for substrait_validator::input::proto::substrait::type::Kind
impl InputNode for substrait_validator::input::proto::substrait::validator::comment::element::Kind
impl InputNode for Link
impl InputNode for substrait_validator::input::proto::substrait::validator::data_type::class::Kind
impl InputNode for Variation
impl InputNode for substrait_validator::input::proto::substrait::validator::data_type::parameter::Kind
impl InputNode for BaseType
impl InputNode for substrait_validator::input::proto::substrait::validator::node::data::Kind
impl InputNode for NodeType
impl InputNode for substrait_validator::input::proto::substrait::validator::node::primitive_data::Data
impl InputNode for substrait_validator::input::proto::substrait::validator::path::element::Kind
impl InputNode for Grouping
impl InputNode for Measure
impl InputNode for SimpleExtension
impl InputNode for Assignment
impl InputNode for BinaryOp
impl InputNode for ExpressionDecimal
impl InputNode for ExpressionFixedBinary
impl InputNode for ExpressionFixedChar
impl InputNode for ExpressionList
impl InputNode for ExpressionMap
impl InputNode for ExpressionNamedStruct
impl InputNode for ExpressionStruct
impl InputNode for ExpressionVarChar
impl InputNode for IfElse
impl InputNode for ReturnProgram
impl InputNode for UnaryOp
impl InputNode for Broadcast
impl InputNode for ExchangeTarget
impl InputNode for MultiBucketExpression
impl InputNode for RoundRobin
impl InputNode for ScatterFields
impl InputNode for SingleBucketExpression
impl InputNode for PythonPickleFunction
impl InputNode for WebAssemblyFunction
impl InputNode for substrait_validator::input::proto::substrait::expression::enum::Empty
impl InputNode for OuterReference
impl InputNode for RootReference
impl InputNode for IfClause
impl InputNode for KeyValue
impl InputNode for substrait_validator::input::proto::substrait::expression::literal::Decimal
impl InputNode for IntervalDayToSecond
impl InputNode for IntervalYearToMonth
impl InputNode for substrait_validator::input::proto::substrait::expression::literal::List
impl InputNode for substrait_validator::input::proto::substrait::expression::literal::Map
impl InputNode for substrait_validator::input::proto::substrait::expression::literal::Struct
impl InputNode for UserDefined
impl InputNode for substrait_validator::input::proto::substrait::expression::literal::VarChar
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::list_select::list_select_item::ListElement
impl InputNode for ListSlice
impl InputNode for ListSelectItem
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::map_select::MapKey
impl InputNode for MapKeyExpression
impl InputNode for ListSelect
impl InputNode for MapSelect
impl InputNode for substrait_validator::input::proto::substrait::expression::mask_expression::Select
impl InputNode for StructItem
impl InputNode for StructSelect
impl InputNode for Record
impl InputNode for substrait_validator::input::proto::substrait::expression::reference_segment::ListElement
impl InputNode for substrait_validator::input::proto::substrait::expression::reference_segment::MapKey
impl InputNode for StructField
impl InputNode for Cast
impl InputNode for EmbeddedFunction
impl InputNode for substrait_validator::input::proto::substrait::expression::Enum
impl InputNode for FieldReference
impl InputNode for IfThen
impl InputNode for Literal
impl InputNode for MaskExpression
impl InputNode for MultiOrList
impl InputNode for ReferenceSegment
impl InputNode for ScalarFunction
impl InputNode for SingularOrList
impl InputNode for Subquery
impl InputNode for SwitchExpression
impl InputNode for WindowFunction
impl InputNode for InPredicate
impl InputNode for substrait_validator::input::proto::substrait::expression::subquery::Scalar
impl InputNode for SetComparison
impl InputNode for SetPredicate
impl InputNode for IfValue
impl InputNode for CurrentRow
impl InputNode for Following
impl InputNode for Preceding
impl InputNode for Unbounded
impl InputNode for Bound
impl InputNode for ExtensionFunction
impl InputNode for ExtensionType
impl InputNode for ExtensionTypeVariation
impl InputNode for AdvancedExtension
impl InputNode for SimpleExtensionDeclaration
impl InputNode for SimpleExtensionUri
impl InputNode for substrait_validator::input::proto::substrait::function_argument::Enum
impl InputNode for EnumArgument
impl InputNode for TypeArgument
impl InputNode for ValueArgument
impl InputNode for Aggregate
impl InputNode for Argument
impl InputNode for Description
impl InputNode for FinalArgNormal
impl InputNode for FinalArgVariadic
impl InputNode for Implementation
impl InputNode for substrait_validator::input::proto::substrait::function_signature::Scalar
impl InputNode for Window
impl InputNode for IntegerOption
impl InputNode for IntegerParameter
impl InputNode for NullableInteger
impl InputNode for ParameterizedDecimal
impl InputNode for ParameterizedFixedBinary
impl InputNode for ParameterizedFixedChar
impl InputNode for ParameterizedList
impl InputNode for ParameterizedMap
impl InputNode for ParameterizedNamedStruct
impl InputNode for ParameterizedStruct
impl InputNode for ParameterizedVarChar
impl InputNode for TypeParameter
impl InputNode for FileOrFiles
impl InputNode for ExtensionTable
impl InputNode for LocalFiles
impl InputNode for NamedTable
impl InputNode for VirtualTable
impl InputNode for RuntimeConstraint
impl InputNode for Stats
impl InputNode for Direct
impl InputNode for Emit
impl InputNode for Hint
impl InputNode for AggregateFunction
impl InputNode for AggregateRel
impl InputNode for Capabilities
impl InputNode for CrossRel
impl InputNode for DerivationExpression
impl InputNode for ExchangeRel
impl InputNode for Expression
impl InputNode for ExtensionLeafRel
impl InputNode for ExtensionMultiRel
impl InputNode for ExtensionSingleRel
impl InputNode for FetchRel
impl InputNode for FilterRel
impl InputNode for FunctionArgument
impl InputNode for FunctionSignature
impl InputNode for JoinRel
impl InputNode for NamedStruct
impl InputNode for ParameterizedType
impl InputNode for Plan
impl InputNode for PlanRel
impl InputNode for ProjectRel
impl InputNode for ReadRel
impl InputNode for Rel
impl InputNode for RelCommon
impl InputNode for RelRoot
impl InputNode for SetRel
impl InputNode for SortField
impl InputNode for SortRel
impl InputNode for substrait_validator::input::proto::substrait::Type
impl InputNode for Binary
impl InputNode for Boolean
impl InputNode for Date
impl InputNode for substrait_validator::input::proto::substrait::type::Decimal
impl InputNode for FixedBinary
impl InputNode for FixedChar
impl InputNode for Fp32
impl InputNode for Fp64
impl InputNode for I8
impl InputNode for I16
impl InputNode for I32
impl InputNode for I64
impl InputNode for IntervalDay
impl InputNode for IntervalYear
impl InputNode for substrait_validator::input::proto::substrait::type::List
impl InputNode for substrait_validator::input::proto::substrait::type::Map
impl InputNode for String
impl InputNode for substrait_validator::input::proto::substrait::type::Struct
impl InputNode for Time
impl InputNode for Timestamp
impl InputNode for TimestampTz
impl InputNode for Uuid
impl InputNode for substrait_validator::input::proto::substrait::type::VarChar
impl InputNode for substrait_validator::input::proto::substrait::validator::comment::Element
impl InputNode for Span
impl InputNode for Class
impl InputNode for Named
impl InputNode for Parameter
impl InputNode for UserDefinedType
impl InputNode for UserDefinedVariation
impl InputNode for substrait_validator::input::proto::substrait::validator::data_type::user_defined_type::Definition
impl InputNode for substrait_validator::input::proto::substrait::validator::data_type::user_defined_type::Element
impl InputNode for substrait_validator::input::proto::substrait::validator::data_type::user_defined_variation::Definition
impl InputNode for Child
impl InputNode for substrait_validator::input::proto::substrait::validator::node::Data
impl InputNode for NodeReference
impl InputNode for PrimitiveData
impl InputNode for ProtoMessage
impl InputNode for ProtoPrimitive
impl InputNode for YamlReference
impl InputNode for ArrayElement
impl InputNode for substrait_validator::input::proto::substrait::validator::path::Element
impl InputNode for Field
impl InputNode for OneOfField
impl InputNode for RepeatedField
impl InputNode for Comment
impl InputNode for DataType
impl InputNode for Diagnostic
impl InputNode for substrait_validator::input::proto::substrait::validator::Empty
impl InputNode for Node
impl InputNode for ParseResult
impl InputNode for Path
impl InputNode for Value
impl<T: ProtoPrimitive> InputNode for T
Blanket implementation to make all protobuf primitives behave like generic protobuf datums.
Note: if Rust would allow it, we could define blanket implementations for ProtoMessage and ProtoOneOf as well, since they’re always the same. Unfortunately, we can only define a single blanket implementation, so we opt for the one that isn’t already generated via derive macros.