cargo::core::registry

Trait Registry

Source
pub trait Registry {
    // Required methods
    fn query(
        &mut self,
        dep: &Dependency,
        kind: QueryKind,
        f: &mut dyn FnMut(IndexSummary),
    ) -> Poll<CargoResult<()>>;
    fn describe_source(&self, source: SourceId) -> String;
    fn is_replaced(&self, source: SourceId) -> bool;
    fn block_until_ready(&mut self) -> CargoResult<()>;

    // Provided method
    fn query_vec(
        &mut self,
        dep: &Dependency,
        kind: QueryKind,
    ) -> Poll<CargoResult<Vec<IndexSummary>>> { ... }
}
Expand description

An abstraction provides a set of methods for querying source information about a group of packages, without leaking too much implementation details of the actual registry.

As of 2024-04, only PackageRegistry and MyRegistry in resolver-tests are found implementing this.

See also the Source trait, as many of the methods here mirror and abstract over its functionalities.

Required Methods§

Source

fn query( &mut self, dep: &Dependency, kind: QueryKind, f: &mut dyn FnMut(IndexSummary), ) -> Poll<CargoResult<()>>

Attempt to find the packages that match a dependency request.

Source

fn describe_source(&self, source: SourceId) -> String

Gets the description of a source, to provide useful messages.

Source

fn is_replaced(&self, source: SourceId) -> bool

Checks if a source is replaced with some other source.

Source

fn block_until_ready(&mut self) -> CargoResult<()>

Block until all outstanding Poll::Pending requests are Poll::Ready.

Provided Methods§

Source

fn query_vec( &mut self, dep: &Dependency, kind: QueryKind, ) -> Poll<CargoResult<Vec<IndexSummary>>>

Gathers the result from Registry::query as a list of IndexSummary items when they become available.

Implementors§

Source§

impl<'gctx> Registry for PackageRegistry<'gctx>