Struct cargo::sources::directory::DirectorySource
source · pub struct DirectorySource<'gctx> {
source_id: SourceId,
root: PathBuf,
packages: HashMap<PackageId, (Package, Checksum)>,
gctx: &'gctx GlobalContext,
updated: bool,
}
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
Fields§
§source_id: SourceId
The unique identifier of this source.
root: PathBuf
The root path of this source.
packages: HashMap<PackageId, (Package, Checksum)>
Packages that this sources has discovered.
gctx: &'gctx GlobalContext
§updated: bool
Implementations§
source§impl<'gctx> DirectorySource<'gctx>
impl<'gctx> DirectorySource<'gctx>
pub fn new( path: &Path, id: SourceId, gctx: &'gctx GlobalContext, ) -> DirectorySource<'gctx>
Trait Implementations§
source§impl<'gctx> Debug for DirectorySource<'gctx>
impl<'gctx> Debug for DirectorySource<'gctx>
source§impl<'gctx> Source for DirectorySource<'gctx>
impl<'gctx> Source for DirectorySource<'gctx>
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<()>>
source§fn supports_checksums(&self) -> bool
fn supports_checksums(&self) -> bool
IndexSummary
items with
checksums listed.source§fn requires_precise(&self) -> bool
fn requires_precise(&self) -> bool
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>
.crate
file. Read moresource§fn fingerprint(&self, pkg: &Package) -> CargoResult<String>
fn fingerprint(&self, pkg: &Package) -> CargoResult<String>
source§fn verify(&self, id: PackageId) -> CargoResult<()>
fn verify(&self, id: PackageId) -> CargoResult<()>
source§fn describe(&self) -> String
fn describe(&self) -> String
source§fn add_to_yanked_whitelist(&mut self, _pkgs: &[PackageId])
fn add_to_yanked_whitelist(&mut self, _pkgs: &[PackageId])
source§fn is_yanked(&mut self, _pkg: PackageId) -> Poll<CargoResult<bool>>
fn is_yanked(&mut self, _pkg: PackageId) -> Poll<CargoResult<bool>>
source§fn invalidate_cache(&mut self)
fn invalidate_cache(&mut self)
source§fn set_quiet(&mut self, _quiet: bool)
fn set_quiet(&mut self, _quiet: bool)
source§fn replaced_source_id(&self) -> SourceId
fn replaced_source_id(&self) -> SourceId
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>>>
Source::query
as a list of IndexSummary
items
when they become available.source§fn download_now(
self: Box<Self>,
package: PackageId,
gctx: &GlobalContext,
) -> CargoResult<Package>where
Self: Sized,
fn download_now(
self: Box<Self>,
package: PackageId,
gctx: &GlobalContext,
) -> CargoResult<Package>where
Self: Sized,
source§fn is_replaced(&self) -> bool
fn is_replaced(&self) -> bool
Auto Trait Implementations§
impl<'gctx> Freeze for DirectorySource<'gctx>
impl<'gctx> !RefUnwindSafe for DirectorySource<'gctx>
impl<'gctx> !Send for DirectorySource<'gctx>
impl<'gctx> !Sync for DirectorySource<'gctx>
impl<'gctx> Unpin for DirectorySource<'gctx>
impl<'gctx> !UnwindSafe for DirectorySource<'gctx>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
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: 96 bytes