pub struct CachedIndex { /* private fields */ }git only.Expand description
Provides an efficient way to check if the given package has been yanked.
Operations on crates.io index are rather slow. Instead of peforming an index lookup for every version of every crate, this implementation looks up each crate only once and caches the result in memory.
Please note that this struct will hold a global Cargo package lock while it exists.
Cargo operations that download crates (e.g. cargo update or even cargo build)
will not be possible while this lock is held.
Implementations§
Source§impl CachedIndex
impl CachedIndex
Sourcepub fn fetch(lock_timeout: Duration) -> Result<Self, Error>
pub fn fetch(lock_timeout: Duration) -> Result<Self, Error>
Open the local crates.io index
If this opens a git index, it will perform a fetch to get the latest index information.
If this is a sparse index, it will be downloaded later on demand.
§Locking
This function will wait for up to lock_timeout for the filesystem lock on the repository.
It will fail with rustsec::Error::LockTimeout if the lock is still held
after that time.
If lock_timeout is set to std::time::Duration::from_secs(0), it will not wait at all,
and instead return an error immediately if it fails to aquire the lock.
Sourcepub fn open(lock_timeout: Duration) -> Result<Self, Error>
pub fn open(lock_timeout: Duration) -> Result<Self, Error>
Open the local crates.io index
If this opens a git index, it allows reading of index entries from the repository.
If this is a sparse index, it only allows reading of index entries that are already cached locally.
§Locking
This function will wait for up to lock_timeout for the filesystem lock on the repository.
It will fail with rustsec::Error::LockTimeout if the lock is still held
after that time.
If lock_timeout is set to std::time::Duration::from_secs(0), it will not wait at all,
and instead return an error immediately if it fails to aquire the lock.
Sourcepub fn find_yanked<'a, I>(
&mut self,
packages: I,
) -> Vec<Result<&'a Package, Error>>where
I: IntoIterator<Item = &'a Package>,
pub fn find_yanked<'a, I>(
&mut self,
packages: I,
) -> Vec<Result<&'a Package, Error>>where
I: IntoIterator<Item = &'a Package>,
Iterate over the provided packages, returning a vector of the packages which have been yanked.
This function should be called with many packages at once rather than one by one; that way it can download the status of a large number of packages at once from the sparse index very quickly, orders of magnitude faster than requesting packages one by one.
Auto Trait Implementations§
impl !Freeze for CachedIndex
impl !RefUnwindSafe for CachedIndex
impl Send for CachedIndex
impl !Sync for CachedIndex
impl Unpin for CachedIndex
impl !UnwindSafe for CachedIndex
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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