rustsec::registry

Struct CachedIndex

Source
pub struct CachedIndex { /* private fields */ }
Available on crate feature 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

Source

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.

Source

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.

Source

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§

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.

Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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