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(
client: Option<ClientBuilder>,
lock_timeout: Duration,
) -> Result<Self, Error>
pub fn fetch( client: Option<ClientBuilder>, 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