pub struct CargoEcosystem { /* private fields */ }Expand description
Cargo ecosystem implementation.
Provides LSP functionality for Cargo.toml files, including:
- Dependency parsing with position tracking
- Version information from crates.io
- Inlay hints for latest versions
- Hover tooltips with package metadata
- Code actions for version updates
- Diagnostics for unknown/yanked packages
Implementations§
Source§impl CargoEcosystem
impl CargoEcosystem
Sourcepub fn new(cache: Arc<HttpCache>) -> Self
pub fn new(cache: Arc<HttpCache>) -> Self
Creates a new Cargo ecosystem with the given HTTP cache, using a fresh, default
CargoParseContext — an all-PublicOnly-policy, empty-cache context private to
this ecosystem instance. Production use goes through Self::with_context instead,
so the policy handle is shared with ServerState and live-updatable via
workspace/didChangeConfiguration.
Sourcepub fn with_context(cache: Arc<HttpCache>, ctx: CargoParseContext) -> Self
pub fn with_context(cache: Arc<HttpCache>, ctx: CargoParseContext) -> Self
Creates a new Cargo ecosystem sharing ctx’s reachability policy and config-file
cache — the production constructor (plan-1b §1.6), used by
crate::lib::register_ecosystems so initialize/workspace/didChangeConfiguration
can update the same Arc<RegistryAccessPolicy> this ecosystem’s every parse reads.
Trait Implementations§
Source§impl Ecosystem for CargoEcosystem
impl Ecosystem for CargoEcosystem
Source§fn display_name(&self) -> &'static str
fn display_name(&self) -> &'static str
Human-readable name (e.g., “Cargo (Rust)”, “npm (JavaScript)”) Read more
Source§fn manifest_filenames(&self) -> &[&'static str]
fn manifest_filenames(&self) -> &[&'static str]
Manifest filenames this ecosystem handles (e.g., [“Cargo.toml”]) Read more
Source§fn lockfile_filenames(&self) -> &[&'static str]
fn lockfile_filenames(&self) -> &[&'static str]
Lock file filenames this ecosystem uses (e.g., [“Cargo.lock”]) Read more
Source§fn parse_manifest<'a>(
&'a self,
content: &'a str,
uri: &'a Uri,
) -> BoxFuture<'a, Result<Box<dyn ParseResultTrait>>>
fn parse_manifest<'a>( &'a self, content: &'a str, uri: &'a Uri, ) -> BoxFuture<'a, Result<Box<dyn ParseResultTrait>>>
Parse a manifest file and return parsed result Read more
Source§fn lockfile_provider(&self) -> Option<Arc<dyn LockFileProvider>>
fn lockfile_provider(&self) -> Option<Arc<dyn LockFileProvider>>
Get the lock file provider for this ecosystem. Read more
Source§fn formatter(&self) -> &dyn EcosystemFormatter
fn formatter(&self) -> &dyn EcosystemFormatter
Get the ecosystem-specific formatter for LSP response generation. Read more
Source§fn generate_completions<'a>(
&'a self,
parse_result: &'a dyn ParseResultTrait,
position: Position,
content: &'a str,
freshness: FreshnessSettings,
) -> BoxFuture<'a, Completions>
fn generate_completions<'a>( &'a self, parse_result: &'a dyn ParseResultTrait, position: Position, content: &'a str, freshness: FreshnessSettings, ) -> BoxFuture<'a, Completions>
Generate completions for a position. Read more
Source§fn manifest_extensions(&self) -> &[&'static str]
fn manifest_extensions(&self) -> &[&'static str]
File extensions this ecosystem handles when the manifest basename is
not fixed (e.g.
[".csproj", ".fsproj"] for NuGet project files). Read moreSource§fn manifest_patterns(&self) -> &[&'static str]
fn manifest_patterns(&self) -> &[&'static str]
Basename glob patterns this ecosystem handles, each containing exactly
one
* wildcard (e.g. ["requirements*.txt"]). Read moreSource§fn manifest_directory_patterns(&self) -> &[(&'static str, &'static str)]
fn manifest_directory_patterns(&self) -> &[(&'static str, &'static str)]
(directory_path, file_suffix) pairs identifying a file solely by its
containing directory path and suffix. directory_path may be a single
segment (e.g. [("requirements", ".txt")] for Python’s
requirements/base.txt split-file layout) or multiple /-joined
segments (e.g. [(".github/workflows", ".yml")] for GitHub Actions
workflow files) — either way it is matched against the tail of the
file’s directory path on segment boundaries, not just the immediate
parent, so a multi-segment pattern matches regardless of how many
ancestor directories precede it. Used when the basename alone carries
no ecosystem signal. Read moreSource§fn watched_config_filenames(&self) -> &[&'static str]
fn watched_config_filenames(&self) -> &[&'static str]
Non-lockfile config filenames this ecosystem resolves during
Self::parse_manifest
(e.g. ["pnpm-workspace.yaml", ".npmrc"] for npm’s catalog and registry resolution),
whose values end up baked into a manifest’s ParseResult rather than looked up
separately the way a Self::lockfile_provider is. Read moreSource§fn generate_inlay_hints<'a>(
&'a self,
parse_result: &'a dyn ParseResult,
versions: VersionData<'a>,
loading_state: LoadingState,
config: &'a EcosystemConfig,
) -> Pin<Box<dyn Future<Output = Vec<InlayHint>> + Send + 'a>>
fn generate_inlay_hints<'a>( &'a self, parse_result: &'a dyn ParseResult, versions: VersionData<'a>, loading_state: LoadingState, config: &'a EcosystemConfig, ) -> Pin<Box<dyn Future<Output = Vec<InlayHint>> + Send + 'a>>
Generate inlay hints for the document. Read more
Source§fn generate_hover<'a>(
&'a self,
parse_result: &'a dyn ParseResult,
position: Position,
versions: VersionData<'a>,
freshness: FreshnessSettings,
) -> Pin<Box<dyn Future<Output = Option<Hover>> + Send + 'a>>
fn generate_hover<'a>( &'a self, parse_result: &'a dyn ParseResult, position: Position, versions: VersionData<'a>, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Option<Hover>> + Send + 'a>>
Generate hover information for a position. Read more
Source§fn generate_code_actions<'a>(
&'a self,
parse_result: &'a dyn ParseResult,
position: Position,
uri: &'a Uri,
versions: VersionData<'a>,
content: &'a str,
) -> Pin<Box<dyn Future<Output = Vec<CodeAction>> + Send + 'a>>
fn generate_code_actions<'a>( &'a self, parse_result: &'a dyn ParseResult, position: Position, uri: &'a Uri, versions: VersionData<'a>, content: &'a str, ) -> Pin<Box<dyn Future<Output = Vec<CodeAction>> + Send + 'a>>
Generate code actions for a position. Read more
Source§fn generate_diagnostics<'a>(
&'a self,
parse_result: &'a dyn ParseResult,
versions: VersionData<'a>,
uri: &'a Uri,
freshness: FreshnessSettings,
severities: DiagnosticSeverities,
) -> Pin<Box<dyn Future<Output = Vec<Diagnostic>> + Send + 'a>>
fn generate_diagnostics<'a>( &'a self, parse_result: &'a dyn ParseResult, versions: VersionData<'a>, uri: &'a Uri, freshness: FreshnessSettings, severities: DiagnosticSeverities, ) -> Pin<Box<dyn Future<Output = Vec<Diagnostic>> + Send + 'a>>
Generate diagnostics for the document. Read more
Source§fn generate_document_links(
&self,
_parse_result: &dyn ParseResult,
_uri: &Uri,
) -> Vec<DocumentLink>
fn generate_document_links( &self, _parse_result: &dyn ParseResult, _uri: &Uri, ) -> Vec<DocumentLink>
Generate
textDocument/documentLink targets for the document. Read moreSource§fn generate_code_lenses<'a>(
&'a self,
parse_result: &'a dyn ParseResult,
content: &'a str,
versions: VersionData<'a>,
uri: &'a Uri,
command_id: &'a str,
) -> Pin<Box<dyn Future<Output = Vec<CodeLens>> + Send + 'a>>
fn generate_code_lenses<'a>( &'a self, parse_result: &'a dyn ParseResult, content: &'a str, versions: VersionData<'a>, uri: &'a Uri, command_id: &'a str, ) -> Pin<Box<dyn Future<Output = Vec<CodeLens>> + Send + 'a>>
Generate the “Update N outdated dependencies” code lens for the document. Read more
Source§fn package_search_is_incomplete(&self) -> bool
fn package_search_is_incomplete(&self) -> bool
Whether this ecosystem’s package-name search may return a truncated view of
a larger candidate set (see e.g.
PypiRegistry::search’s doc comment). Read moreimpl Sealed for CargoEcosystem
Auto Trait Implementations§
impl !RefUnwindSafe for CargoEcosystem
impl !UnwindSafe for CargoEcosystem
impl Freeze for CargoEcosystem
impl Send for CargoEcosystem
impl Sync for CargoEcosystem
impl Unpin for CargoEcosystem
impl UnsafeUnpin for CargoEcosystem
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