pub struct ImplementationProvider { /* private fields */ }Expand description
Provider for finding implementations of types and interfaces in Perl code
This provider locates implementations and inheritance relationships in Perl codebases:
- Subclasses that inherit from a base class using
@ISAoruse parent - Overridden methods in derived classes
- Package implementations and blessed type relationships
§LSP Workflow Integration
Integrates with the Parse → Index → Navigate → Complete → Analyze workflow:
- Parse: AST analysis identifies package and method definitions
- Index: Workspace indexing tracks inheritance relationships
- Navigate: Provides go-to-implementation functionality
- Complete: No direct integration (implementations don’t affect completion)
- Analyze: Implementation analysis supports refactoring decisions
§Performance
- Implementation finding: <100ms for typical inheritance hierarchies
- Memory usage: <5MB for implementation metadata
- Workspace indexing: Leverages cached inheritance relationships
Implementations§
Source§impl ImplementationProvider
impl ImplementationProvider
Sourcepub fn new(
workspace_index: Option<Arc<WorkspaceIndex>>,
) -> ImplementationProvider
pub fn new( workspace_index: Option<Arc<WorkspaceIndex>>, ) -> ImplementationProvider
Create a new implementation provider with optional workspace indexing
§Arguments
workspace_index- Optional workspace index for cross-file inheritance tracking
§Returns
A new ImplementationProvider configured for finding Perl implementations
§Examples
ⓘ
use perl_lsp_rs_core::providers::navigation::ImplementationProvider;
// Without workspace indexing (single-file analysis)
let provider = ImplementationProvider::new(None);
// With workspace indexing (cross-file inheritance)
let provider = ImplementationProvider::new(Some(workspace_index));Auto Trait Implementations§
impl !RefUnwindSafe for ImplementationProvider
impl !UnwindSafe for ImplementationProvider
impl Freeze for ImplementationProvider
impl Send for ImplementationProvider
impl Sync for ImplementationProvider
impl Unpin for ImplementationProvider
impl UnsafeUnpin for ImplementationProvider
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
Mutably borrows from an owned value. Read more