pub enum DefinitionKind<'db> {
Show 24 variants
Import(ImportDefinitionKind),
ImportFrom(ImportFromDefinitionKind),
ImportFromSubmodule(ImportFromSubmoduleDefinitionKind),
StarImport(StarImportDefinitionKind),
Function(AstNodeRef<StmtFunctionDef>),
Class(AstNodeRef<StmtClassDef>),
TypeAlias(AstNodeRef<StmtTypeAlias>),
NamedExpression(AstNodeRef<ExprNamed>),
Assignment(AssignmentDefinitionKind<'db>),
AnnotatedAssignment(AnnotatedAssignmentDefinitionKind),
AugmentedAssignment(AstNodeRef<StmtAugAssign>),
DictKeyAssignment(DictKeyAssignmentKind<'db>),
For(ForStmtDefinitionKind<'db>),
Comprehension(ComprehensionDefinitionKind<'db>),
Parameter(ParameterDefinitionNodeKind),
LambdaParameter(LambdaParameterDefinitionNodeKind),
WithItem(WithItemDefinitionKind<'db>),
MatchPattern(MatchPatternDefinitionKind<'db>),
ExceptHandler(ExceptHandlerDefinitionKind),
TypeVar(AstNodeRef<TypeParamTypeVar>),
ParamSpec(AstNodeRef<TypeParamParamSpec>),
TypeVarTuple(AstNodeRef<TypeParamTypeVarTuple>),
LoopHeader(LoopHeaderDefinitionKind),
NestedBindings(Box<NestedBindingsDefinitionKind>),
}Expand description
The kind of a definition.
§Usage in salsa tracked structs
DefinitionKind fields in salsa tracked structs should be tracked (attributed with #[tracked])
because the kind is a thin wrapper around AstNodeRef. See the AstNodeRef documentation
for an in-depth explanation of why this is necessary.
Variants§
Import(ImportDefinitionKind)
ImportFrom(ImportFromDefinitionKind)
ImportFromSubmodule(ImportFromSubmoduleDefinitionKind)
StarImport(StarImportDefinitionKind)
Function(AstNodeRef<StmtFunctionDef>)
Class(AstNodeRef<StmtClassDef>)
TypeAlias(AstNodeRef<StmtTypeAlias>)
NamedExpression(AstNodeRef<ExprNamed>)
Assignment(AssignmentDefinitionKind<'db>)
AnnotatedAssignment(AnnotatedAssignmentDefinitionKind)
AugmentedAssignment(AstNodeRef<StmtAugAssign>)
DictKeyAssignment(DictKeyAssignmentKind<'db>)
For(ForStmtDefinitionKind<'db>)
Comprehension(ComprehensionDefinitionKind<'db>)
Parameter(ParameterDefinitionNodeKind)
LambdaParameter(LambdaParameterDefinitionNodeKind)
WithItem(WithItemDefinitionKind<'db>)
MatchPattern(MatchPatternDefinitionKind<'db>)
ExceptHandler(ExceptHandlerDefinitionKind)
TypeVar(AstNodeRef<TypeParamTypeVar>)
ParamSpec(AstNodeRef<TypeParamParamSpec>)
TypeVarTuple(AstNodeRef<TypeParamTypeVarTuple>)
LoopHeader(LoopHeaderDefinitionKind)
NestedBindings(Box<NestedBindingsDefinitionKind>)
Implementations§
Source§impl<'db> DefinitionKind<'db>
impl<'db> DefinitionKind<'db>
pub const fn as_star_import(&self) -> Option<&StarImportDefinitionKind>
pub const fn as_class(&self) -> Option<&AstNodeRef<StmtClassDef>>
pub fn is_import(&self) -> bool
pub const fn is_unannotated_assignment(&self) -> bool
pub const fn is_function_def(&self) -> bool
pub const fn is_parameter_def(&self) -> bool
pub const fn is_loop_header(&self) -> bool
Sourcepub const fn is_user_visible(&self) -> bool
pub const fn is_user_visible(&self) -> bool
Returns true if this definition is user-visible (i.e., not an internal
synthetic definition like a loop header or nested bindings definition).
Sourcepub fn target_range(&self, module: &ParsedModuleRef) -> TextRange
pub fn target_range(&self, module: &ParsedModuleRef) -> TextRange
Returns the TextRange of the definition target.
A definition target would mainly be the node representing the place being defined i.e.,
ast::ExprName, ast::Identifier, ast::ExprAttribute or ast::ExprSubscript but could also be other nodes.
Sourcepub fn full_range(&self, module: &ParsedModuleRef) -> TextRange
pub fn full_range(&self, module: &ParsedModuleRef) -> TextRange
Returns the TextRange of the entire definition.
pub fn category( &self, in_stub: bool, module: &ParsedModuleRef, ) -> DefinitionCategory
Sourcepub fn value<'ast>(&self, module: &'ast ParsedModuleRef) -> Option<&'ast Expr>
pub fn value<'ast>(&self, module: &'ast ParsedModuleRef) -> Option<&'ast Expr>
Returns the value expression for assignment-based definitions.
Returns Some for Assignment and AnnotatedAssignment (if it has a value),
None for all other definition kinds.
Trait Implementations§
Source§impl<'db> Clone for DefinitionKind<'db>
impl<'db> Clone for DefinitionKind<'db>
Source§fn clone(&self) -> DefinitionKind<'db>
fn clone(&self) -> DefinitionKind<'db>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'db> Debug for DefinitionKind<'db>
impl<'db> Debug for DefinitionKind<'db>
Source§impl<'db> GetSize for DefinitionKind<'db>
impl<'db> GetSize for DefinitionKind<'db>
Source§fn get_heap_size(&self) -> usize
fn get_heap_size(&self) -> usize
Source§fn get_heap_size_with_tracker<TRACKER: GetSizeTracker>(
&self,
tracker: TRACKER,
) -> (usize, TRACKER)
fn get_heap_size_with_tracker<TRACKER: GetSizeTracker>( &self, tracker: TRACKER, ) -> (usize, TRACKER)
tracker. Read moreSource§fn get_stack_size() -> usize
fn get_stack_size() -> usize
Source§fn get_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
fn get_size_with_tracker<T>(&self, tracker: T) -> (usize, T)where
T: GetSizeTracker,
tracker. Read moreimpl<'db> SalsaValue for DefinitionKind<'db>
Auto Trait Implementations§
impl<'db> Freeze for DefinitionKind<'db>
impl<'db> RefUnwindSafe for DefinitionKind<'db>
impl<'db> Send for DefinitionKind<'db>
impl<'db> Sync for DefinitionKind<'db>
impl<'db> Unpin for DefinitionKind<'db>
impl<'db> UnsafeUnpin for DefinitionKind<'db>
impl<'db> UnwindSafe for DefinitionKind<'db>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.