cargo::sources::registry::index

Struct Summaries

source
struct Summaries {
    raw_data: Vec<u8>,
    versions: HashMap<Version, MaybeIndexSummary>,
}
Expand description

An internal cache of summaries for a particular package.

A list of summaries are loaded from disk via one of two methods:

  1. From raw registry index — Primarily Cargo will parse the corresponding file for a crate in the upstream crates.io registry. That’s just a JSON blob per line which we can parse, extract the version, and then store here. See IndexPackage and IndexSummary::parse.

  2. From on-disk index cache — If Cargo has previously run, we’ll have a cached index of dependencies for the upstream index. This is a file that Cargo maintains lazily on the local filesystem and is much faster to parse since it doesn’t involve parsing all of the JSON. See SummariesCache.

The outward-facing interface of this doesn’t matter too much where it’s loaded from, but it’s important when reading the implementation to note that we try to parse as little as possible!

Fields§

§raw_data: Vec<u8>

A raw vector of uninterpreted bytes. This is what Unparsed start/end fields are indexes into. If a Summaries is loaded from the crates.io index then this field will be empty since nothing is Unparsed.

§versions: HashMap<Version, MaybeIndexSummary>

All known versions of a crate, keyed from their Version to the possibly parsed or unparsed version of the full summary.

Implementations§

source§

impl Summaries

source

pub fn parse( root: &Path, name: &str, source_id: SourceId, load: &mut dyn RegistryData, bindeps: bool, cache_manager: &CacheManager<'_>, ) -> Poll<CargoResult<Option<Summaries>>>

Parse out a Summaries instances from on-disk state.

This will do the followings in order:

  1. Attempt to prefer parsing a previous index cache file that already exists from a previous invocation of Cargo (aka you’re typing cargo build again after typing it previously).
  2. If parsing fails, or the cache isn’t found or is invalid, we then take a slower path which loads the full descriptor for relative from the underlying index (aka libgit2 with crates.io, or from a remote HTTP index) and then parse everything in there.
  • root — this is the root argument passed to load
  • name — the name of the package.
  • source_id — the registry’s SourceId used when parsing JSON blobs to create summaries.
  • load — the actual index implementation which may be very slow to call. We avoid this if we can.
  • bindeps — whether the -Zbindeps unstable flag is enabled
source

pub fn parse_cache( contents: Vec<u8>, ) -> CargoResult<(Summaries, InternedString)>

Parses the contents of an on-disk cache, aka SummariesCache, which represents information previously cached by Cargo.

Trait Implementations§

source§

impl Default for Summaries

source§

fn default() -> Summaries

Returns the “default value” for a type. Read more

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

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 72 bytes