Definition

Struct Definition 

Source
pub struct Definition {
    pub extension_id: u64,
    pub description: String,
    pub actual_uri: String,
    pub dependencies: HashMap<String, Reference>,
    pub type_classes: NamespaceReference,
    pub type_variations: NamespaceReference,
    pub function_impls: NamespaceReference,
}
Expand description

A parsed simple extension module/file.

Fields§

§extension_id: u64

Unique number within the tree that can be used to refer to this extension when exporting in protobuf form.

§description: String

Description of the module.

§actual_uri: String

The URI that was actually used to resolve the module.

§dependencies: HashMap<String, Reference>

Map with references to dependencies.

§type_classes: NamespaceReference

Reference to the namespace in which this module’s type classes were defined. Unlike the type variation and function implementation namespaces, these should never be ambiguous, but we use the same mechanism anyway.

§type_variations: NamespaceReference

Reference to the namespace in which this module’s type variations were defined. Note that variations are technically namespaced to the type class they were defined for; however, this would make type variation anchors very poorly defined. Instead, we pretend that they’re all in the same namespace, but allow multiple definitions with the same name within our namespace system. Only when a type variation anchor/reference pair is referred to in the plan and the type class is known do we attempt to solve this ambiguity.

§function_impls: NamespaceReference

Reference to the namespace in which this module’s function implementations were defined. Each implementation is mapped twice: once for its simple function name, and once for its compound name. The former will be ambiguous if multiple implementations exist for a function, which we do indeed try to solve for using the type patterns, even though Substrait explicitly disallows referring to a function by its simple name if the function has multiple definitions. Likewise, we also solve this if a compound name is ambigous, again despite Substrait disallowing extensions from creating this situation.

Trait Implementations§

Source§

impl Clone for Definition

Source§

fn clone(&self) -> Definition

Returns a duplicate 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 Debug for Definition

Source§

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

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

impl Default for Definition

Source§

fn default() -> Definition

Returns the “default value” for a type. Read more
Source§

impl Scope for Definition

Source§

fn resolve_type_class<T>(&self, name: T) -> ResolutionResult

Resolves a to-be-resolved reference to a type class.

Source§

fn resolve_type_variation<T>(&self, name: T) -> ResolutionResult

Resolves a to-be-resolved reference to a type variation.

Source§

fn resolve_function<T>(&self, name: T) -> ResolutionResult

Resolves a to-be-resolved reference to a function.

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> AnyExt for T
where T: Any + ?Sized,

Source§

fn downcast_ref<T>(this: &Self) -> Option<&T>
where T: Any,

Attempts to downcast this to T behind reference
Source§

fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>
where T: Any,

Attempts to downcast this to T behind mutable reference
Source§

fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Any,

Attempts to downcast this to T behind Rc pointer
Source§

fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Any,

Attempts to downcast this to T behind Arc pointer
Source§

fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Any,

Attempts to downcast this to T behind Box pointer
Source§

fn downcast_move<T>(this: Self) -> Option<T>
where T: Any, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T, X> CoerceTo<T> for X
where T: CoerceFrom<X> + ?Sized,

Source§

fn coerce_rc_to(self: Rc<X>) -> Rc<T>

Source§

fn coerce_box_to(self: Box<X>) -> Box<T>

Source§

fn coerce_ref_to(&self) -> &T

Source§

fn coerce_mut_to(&mut self) -> &mut T

Source§

impl<T> DynScope for T
where T: Scope,

Source§

fn resolve_type_class_from_ref( &self, name: Data<Definition>, ) -> ResolutionResult<Definition>

Resolves a to-be-resolved reference to a type class.
Source§

fn resolve_type_variation_from_ref( &self, name: Data<Definition>, ) -> ResolutionResult<Definition>

Resolves a to-be-resolved reference to a type variation.
Source§

fn resolve_function_from_ref( &self, name: Data<Definition>, ) -> ResolutionResult<Definition>

Resolves a to-be-resolved reference to a function.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

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

Source§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

Source§

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<T> ErasedDestructor for T
where T: 'static,