Skip to main content

SymbolKind

Enum SymbolKind 

Source
pub enum SymbolKind {
    Package,
    Class,
    Role,
    Subroutine,
    Method,
    Variable(VarKind),
    Constant,
    Import,
    Export,
    Label,
    Format,
}
Expand description

Symbol extraction, table, and reference types for navigation. Unified Perl symbol classification for LSP tooling.

This enum represents all meaningful symbol types in Perl code, designed to be the canonical taxonomy across all crates in the perl-lsp ecosystem.

§LSP Protocol Mapping

Each variant maps to an LSP SymbolKind number via Self::to_lsp_kind():

VariantLSP KindNumberDescription
PackageModule2Package declaration
ClassClass5OO class (Moose, Moo, class keyword)
RoleInterface8Role definition (Moose::Role)
SubroutineFunction12Standalone subroutine
MethodMethod6OO method
Variable(_)Variable13Variables (scalar, array, hash)
ConstantConstant14use constant or Readonly
ImportModule2Imported symbol
ExportFunction12Exported symbol
LabelKey20Loop/block label
FormatStruct23format declaration

Variants§

§

Package

Package declaration (package Foo;)

§

Class

OO class declaration (class keyword, Moose, Moo)

§

Role

Role definition (role keyword, Moose::Role)

§

Subroutine

Subroutine definition (sub name { })

§

Method

Method definition in OO context

§

Variable(VarKind)

Variable declaration with sigil-based container type

§

Constant

Constant value (use constant NAME => value)

§

Import

Imported symbol from use statement

§

Export

Exported symbol via Exporter

§

Label

Loop/block label (LABEL: while ...)

§

Format

Format declaration (format STDOUT =)

Implementations§

Source§

impl SymbolKind

Source

pub const fn to_lsp_kind(self) -> u32

Convert to LSP-compliant symbol kind number (workspace profile).

Maps Perl symbol types to the closest LSP protocol equivalents. This is the default mapping used for workspace symbols where a generic “Variable” kind is appropriate for all variable types.

See the enum documentation for the full mapping table.

Source

pub const fn to_lsp_kind_document_symbol(self) -> u32

Convert to LSP symbol kind with richer variable type distinctions.

This mapping provides a richer UI experience for document symbols by distinguishing between scalar, array, and hash variables:

Variable TypeLSP KindNumberIcon
Scalar ($)Variable13generic variable
Array (@)Array18array/list icon
Hash (%)Object19object/dict icon

Use this for document symbol providers where visual distinction of variable types improves navigation.

Source

pub const fn sigil(self) -> Option<&'static str>

Returns the sigil for this symbol kind if applicable.

Only variable symbols have sigils; all other symbols return None.

§Examples
use perl_symbol_types::{SymbolKind, VarKind};

assert_eq!(SymbolKind::Variable(VarKind::Scalar).sigil(), Some("$"));
assert_eq!(SymbolKind::Variable(VarKind::Array).sigil(), Some("@"));
assert_eq!(SymbolKind::Subroutine.sigil(), None);
Source

pub const fn is_variable(self) -> bool

Returns true if this is any variable type.

Source

pub const fn is_callable(self) -> bool

Returns true if this is a callable type (subroutine or method).

Source

pub const fn is_namespace(self) -> bool

Returns true if this is a namespace type (package, class, or role).

Source

pub const fn scalar() -> SymbolKind

Create a scalar variable symbol kind.

Source

pub const fn array() -> SymbolKind

Create an array variable symbol kind.

Source

pub const fn hash() -> SymbolKind

Create a hash variable symbol kind.

Trait Implementations§

Source§

impl Clone for SymbolKind

Source§

fn clone(&self) -> SymbolKind

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 SymbolKind

Source§

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

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

impl<'de> Deserialize<'de> for SymbolKind

Source§

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

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

impl Hash for SymbolKind

Source§

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

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 PartialEq for SymbolKind

Source§

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

Source§

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

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

impl Copy for SymbolKind

Source§

impl Eq for SymbolKind

Source§

impl StructuralPartialEq for SymbolKind

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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> 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> 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,