Struct cargo::sources::directory::DirectorySource
source · pub struct DirectorySource<'cfg> { /* private fields */ }
Expand description
DirectorySource
contains a number of crates on the file system. It was
designed for representing vendored dependencies for cargo vendor
.
DirectorySource
at this moment is just a root directory containing other
directories, which contain the source files of packages. Assumptions would
be made to determine if a directory should be included as a package of a
directory source’s:
- Ignore directories starting with dot
.
(tend to be hidden). - Only when a
Cargo.toml
exists in a directory will it be included as a package.DirectorySource
at this time only looks at one level of directories and never went deeper. - There must be a [
Checksum
] file.cargo-checksum.json
file at the same level ofCargo.toml
to ensure the integrity when a directory source was created (usually bycargo vendor
). A failure to find or parse a single checksum results in a denial of loading any package in this source. - Otherwise, there is no other restrction of the name of directories. At
this moment, it is
cargo vendor
that defines the layout and the name of each directory.
The file tree of a directory source may look like:
[source root]
├── a-valid-crate/
│ ├── src/
│ ├── .cargo-checksum.json
│ └── Cargo.toml
├── .ignored-a-dot-crate/
│ ├── src/
│ ├── .cargo-checksum.json
│ └── Cargo.toml
├── skipped-no-manifest/
│ ├── src/
│ └── .cargo-checksum.json
└── no-checksum-so-fails-the-entire-source-reading/
└── Cargo.toml
Implementations§
source§impl<'cfg> DirectorySource<'cfg>
impl<'cfg> DirectorySource<'cfg>
Trait Implementations§
source§impl<'cfg> Debug for DirectorySource<'cfg>
impl<'cfg> Debug for DirectorySource<'cfg>
source§impl<'cfg> Source for DirectorySource<'cfg>
impl<'cfg> Source for DirectorySource<'cfg>
source§fn query(
&mut self,
dep: &Dependency,
kind: QueryKind,
f: &mut dyn FnMut(IndexSummary)
) -> Poll<CargoResult<()>>
fn query( &mut self, dep: &Dependency, kind: QueryKind, f: &mut dyn FnMut(IndexSummary) ) -> Poll<CargoResult<()>>
Attempts to find the packages that match a dependency request. Read more
source§fn supports_checksums(&self) -> bool
fn supports_checksums(&self) -> bool
Returns whether or not this source will return
IndexSummary
items with
checksums listed.source§fn requires_precise(&self) -> bool
fn requires_precise(&self) -> bool
Returns whether or not this source will return
IndexSummary
items with
the precise
field in the SourceId
listed.source§fn block_until_ready(&mut self) -> CargoResult<()>
fn block_until_ready(&mut self) -> CargoResult<()>
source§fn download(&mut self, id: PackageId) -> CargoResult<MaybePackage>
fn download(&mut self, id: PackageId) -> CargoResult<MaybePackage>
source§fn finish_download(
&mut self,
_id: PackageId,
_data: Vec<u8>
) -> CargoResult<Package>
fn finish_download( &mut self, _id: PackageId, _data: Vec<u8> ) -> CargoResult<Package>
Gives the source the downloaded
.crate
file. Read moresource§fn fingerprint(&self, pkg: &Package) -> CargoResult<String>
fn fingerprint(&self, pkg: &Package) -> CargoResult<String>
Generates a unique string which represents the fingerprint of the
current state of the source. Read more
source§fn verify(&self, id: PackageId) -> CargoResult<()>
fn verify(&self, id: PackageId) -> CargoResult<()>
If this source supports it, verifies the source of the package
specified. Read more
source§fn describe(&self) -> String
fn describe(&self) -> String
Describes this source in a human readable fashion, used for display in
resolver error messages currently.
source§fn add_to_yanked_whitelist(&mut self, _pkgs: &[PackageId])
fn add_to_yanked_whitelist(&mut self, _pkgs: &[PackageId])
Add a number of crates that should be whitelisted for showing up during
queries, even if they are yanked. Currently only applies to registry
sources.
source§fn is_yanked(&mut self, _pkg: PackageId) -> Poll<CargoResult<bool>>
fn is_yanked(&mut self, _pkg: PackageId) -> Poll<CargoResult<bool>>
Query if a package is yanked. Only registry sources can mark packages
as yanked. This ignores the yanked whitelist.
source§fn invalidate_cache(&mut self)
fn invalidate_cache(&mut self)
Ensure that the source is fully up-to-date for the current session on the next query.
source§fn set_quiet(&mut self, _quiet: bool)
fn set_quiet(&mut self, _quiet: bool)
If quiet, the source should not display any progress or status messages.
source§fn replaced_source_id(&self) -> SourceId
fn replaced_source_id(&self) -> SourceId
Returns the replaced
SourceId
corresponding to this source.source§fn query_vec(
&mut self,
dep: &Dependency,
kind: QueryKind
) -> Poll<CargoResult<Vec<IndexSummary>>>
fn query_vec( &mut self, dep: &Dependency, kind: QueryKind ) -> Poll<CargoResult<Vec<IndexSummary>>>
Gathers the result from
Source::query
as a list of IndexSummary
items
when they become available.source§fn download_now(
self: Box<Self>,
package: PackageId,
config: &Config
) -> CargoResult<Package>where
Self: Sized,
fn download_now(
self: Box<Self>,
package: PackageId,
config: &Config
) -> CargoResult<Package>where
Self: Sized,
source§fn is_replaced(&self) -> bool
fn is_replaced(&self) -> bool
Returns whether a source is being replaced by another here.
Auto Trait Implementations§
impl<'cfg> Freeze for DirectorySource<'cfg>
impl<'cfg> !RefUnwindSafe for DirectorySource<'cfg>
impl<'cfg> !Send for DirectorySource<'cfg>
impl<'cfg> !Sync for DirectorySource<'cfg>
impl<'cfg> Unpin for DirectorySource<'cfg>
impl<'cfg> !UnwindSafe for DirectorySource<'cfg>
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
Mutably borrows from an owned value. Read more