pub struct MavenCentralRegistry { /* private fields */ }Implementations§
Source§impl MavenCentralRegistry
impl MavenCentralRegistry
pub fn new(cache: Arc<HttpCache>) -> MavenCentralRegistry
Sourcepub async fn get_versions_typed_with(
&self,
name: &str,
freshness_enabled: bool,
) -> Result<Vec<MavenVersion>, DepsError>
pub async fn get_versions_typed_with( &self, name: &str, freshness_enabled: bool, ) -> Result<Vec<MavenVersion>, DepsError>
Same as Self::get_versions_typed, but attaches MavenVersion::published_at
from the repo1.maven.org directory listing when freshness_enabled and the
artifact resolved through Maven Central.
The listing fetch is gated on the winning base being Maven Central specifically —
not merely present — because Google Maven’s listing always 404s (no negative
caching in HttpCache, so an unconditional fetch would retry forever) and the
Gradle Plugin Portal’s listing has no date column (a wasted fetch+parse on every
call). Both degrade to zero extra requests here rather than one doomed one.
Sourcepub async fn get_versions_typed(
&self,
name: &str,
) -> Result<Vec<MavenVersion>, DepsError>
pub async fn get_versions_typed( &self, name: &str, ) -> Result<Vec<MavenVersion>, DepsError>
Fetches all available versions, without publish-time enrichment.
Delegates to Self::get_versions_typed_with with freshness disabled so the two
paths cannot drift apart.
pub async fn get_latest_matching_typed( &self, name: &str, req: &str, ) -> Result<Option<MavenVersion>, DepsError>
Sourcepub async fn search_typed(
&self,
query: &str,
limit: usize,
) -> Result<Vec<ArtifactInfo>, DepsError>
pub async fn search_typed( &self, query: &str, limit: usize, ) -> Result<Vec<ArtifactInfo>, DepsError>
Searches Maven Central for artifacts matching query.
Retries against solrsearch via search_with_retry, falling back to a stale
cached result (if any) on failure, to work around its silent-timeout
unreliability (#274) without exceeding the caller’s own completion deadline. See
SEARCH_ATTEMPT_TIMEOUTS and search_with_retry for the retry/fallback policy.
A query that failed live within the last RECENT_FAILURE_TTL short-circuits to
the same error with no network attempt at all (#282 gap 1) — this is what keeps
a completion request’s own fallback search (deps-lsp’s completion.rs) from
doubling live request volume against an endpoint that is already fast-failing
for this query, since a fast failure (unlike a hang) returns well inside the
caller’s own deadline and so does not get skipped by that deadline alone.
The request always asks solrsearch for SEARCH_CACHE_ROWS rows regardless of
limit (#282 gap 2), so that calls with different limits for the same query
share one HttpCache entry — limit only trims the parsed result afterward via
parse_search_response.
§Errors
Returns the last error (an HTTP/network error, or a synthesized timeout error) if every attempt fails and no cached result is available to fall back to.
Trait Implementations§
Source§impl Clone for MavenCentralRegistry
impl Clone for MavenCentralRegistry
Source§fn clone(&self) -> MavenCentralRegistry
fn clone(&self) -> MavenCentralRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Registry for MavenCentralRegistry
impl Registry for MavenCentralRegistry
Source§fn get_versions<'a>(
&'a self,
name: &'a PackageName,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions<'a>( &'a self, name: &'a PackageName, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
Source§fn get_versions_with<'a>(
&'a self,
name: &'a PackageName,
freshness: FreshnessSettings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions_with<'a>( &'a self, name: &'a PackageName, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_versions, but lets a registry that can obtain
Version::published_at only through an extra request gate that request behind
freshness.enabled instead of always paying for it. Read moreSource§fn get_latest_matching<'a>(
&'a self,
name: &'a PackageName,
req: &'a VersionReq,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching<'a>( &'a self, name: &'a PackageName, req: &'a VersionReq, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
Source§fn search<'a>(
&'a self,
query: &'a str,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Metadata>>, DepsError>> + Send + 'a>>
fn search<'a>( &'a self, query: &'a str, limit: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Metadata>>, DepsError>> + Send + 'a>>
Source§fn select_latest_matching(
&self,
versions: &[Box<dyn Version>],
req: &VersionReq,
) -> Option<usize>
fn select_latest_matching( &self, versions: &[Box<dyn Version>], req: &VersionReq, ) -> Option<usize>
Source§fn reports_yanked(&self) -> bool
fn reports_yanked(&self) -> bool
get_versions results carry meaningful
per-version yank/deprecation data via Version::removal_status. Read moreSource§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Source§fn get_versions_from<'a>(
&'a self,
name: &'a PackageName,
source: &'a DependencySource,
freshness: FreshnessSettings,
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_versions_from<'a>( &'a self, name: &'a PackageName, source: &'a DependencySource, freshness: FreshnessSettings, ) -> Pin<Box<dyn Future<Output = Result<Vec<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_versions_with, but additionally carries the
dependency’s resolved DependencySource, for a registry that routes a single
fetch across more than one underlying index (e.g. deps-cargo’s CargoRegistry,
which dispatches a DependencySource::AlternateRegistry to a private sparse index
instead of crates.io). Read moreSource§fn get_latest_matching_with_context<'a>(
&'a self,
name: &'a PackageName,
req: &'a VersionReq,
minimum_stability: Option<&'a str>,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching_with_context<'a>( &'a self, name: &'a PackageName, req: &'a VersionReq, minimum_stability: Option<&'a str>, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_latest_matching, but lets a registry whose
“latest matching” selection can be refined by ecosystem-specific manifest state (e.g.
Composer’s minimum-stability field, #424) read it, alongside req. Read moreSource§fn get_latest_matching_from<'a>(
&'a self,
name: &'a PackageName,
source: &'a DependencySource,
req: &'a VersionReq,
minimum_stability: Option<&'a str>,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
fn get_latest_matching_from<'a>( &'a self, name: &'a PackageName, source: &'a DependencySource, req: &'a VersionReq, minimum_stability: Option<&'a str>, ) -> Pin<Box<dyn Future<Output = Result<Option<Box<dyn Version>>, DepsError>> + Send + 'a>>
get_latest_matching_with_context,
but additionally carries the dependency’s resolved DependencySource — the
get_latest_matching-shaped counterpart to
get_versions_from, covering the fallback path a caller
takes when the list-based pick fails on a non-empty get_versions_from
result (see deps_core::lsp_helpers::hover’s list_fallback_latest and
deps-lsp’s background-fetch fallback for the two call sites this exists for). Read moreSource§fn select_latest_matching_with_context(
&self,
versions: &[Box<dyn Version>],
req: &VersionReq,
minimum_stability: Option<&str>,
) -> Option<usize>
fn select_latest_matching_with_context( &self, versions: &[Box<dyn Version>], req: &VersionReq, minimum_stability: Option<&str>, ) -> Option<usize>
select_latest_matching, but lets a registry
whose selection can be refined by ecosystem-specific manifest state (e.g. Composer’s
minimum-stability field, #424) read it, alongside versions and req. See
get_latest_matching_with_context for why
minimum_stability is an opaque per-ecosystem string rather than a shared type. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for MavenCentralRegistry
impl !UnwindSafe for MavenCentralRegistry
impl Freeze for MavenCentralRegistry
impl Send for MavenCentralRegistry
impl Sync for MavenCentralRegistry
impl Unpin for MavenCentralRegistry
impl UnsafeUnpin for MavenCentralRegistry
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more