Struct cargo::sources::directory::DirectorySource
source · pub struct DirectorySource<'cfg> {
source_id: SourceId,
root: PathBuf,
packages: HashMap<PackageId, (Package, Checksum)>,
config: &'cfg Config,
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.tomlexists in a directory will it be included as a package.DirectorySourceat this time only looks at one level of directories and never went deeper. - There must be a
Checksumfile.cargo-checksum.jsonfile at the same level ofCargo.tomlto 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 vendorthat 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: SourceIdThe unique identifier of this source.
root: PathBufThe root path of this source.
packages: HashMap<PackageId, (Package, Checksum)>Packages that this sources has discovered.
config: &'cfg Config§updated: boolImplementations§
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(Summary)
) -> Poll<CargoResult<()>>
fn query( &mut self, dep: &Dependency, kind: QueryKind, f: &mut dyn FnMut(Summary) ) -> Poll<CargoResult<()>>
source§fn supports_checksums(&self) -> bool
fn supports_checksums(&self) -> bool
Summary items with
checksums listed.source§fn requires_precise(&self) -> bool
fn requires_precise(&self) -> bool
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<Summary>>>
fn query_vec( &mut self, dep: &Dependency, kind: QueryKind ) -> Poll<CargoResult<Vec<Summary>>>
Source::query as a list of Summary 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
Auto Trait Implementations§
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
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> WithSubscriber for T
impl<T> WithSubscriber for T
source§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>,
source§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