struct ManifestErrorContext {
path: PathBuf,
spans: Spanned<DeTable<'static>>,
contents: String,
rename_table: HashMap<InternedString, InternedString>,
requested_kinds: Vec<CompileKind>,
cfgs: Vec<Vec<Cfg>>,
host_name: InternedString,
cwd: PathBuf,
term_width: usize,
}
Expand description
Cloned and sendable context about the manifest file.
Sometimes we enrich rustc’s errors with some locations in the manifest file; this
contains a Send
-able copy of the manifest information that we need for the
enriched errors.
Fields§
§path: PathBuf
The path to the manifest.
spans: Spanned<DeTable<'static>>
The locations of various spans within the manifest.
contents: String
The raw manifest contents.
rename_table: HashMap<InternedString, InternedString>
A lookup for all the unambiguous renamings, mapping from the original package name to the renamed one.
requested_kinds: Vec<CompileKind>
A list of targets we’re compiling for, to determine which of the [target.<something>.dependencies]
tables might be of interest.
cfgs: Vec<Vec<Cfg>>
A list of all the collections of cfg values, one collection for each target, to determine
which of the [target.'cfg(...)'.dependencies]
tables might be of interest.
host_name: InternedString
§cwd: PathBuf
Cargo’s working directory (for printing out a more friendly manifest path).
term_width: usize
Terminal width for formatting diagnostics.
Implementations§
Source§impl ManifestErrorContext
impl ManifestErrorContext
fn new(build_runner: &BuildRunner<'_, '_>, unit: &Unit) -> ManifestErrorContext
fn requested_target_names(&self) -> impl Iterator<Item = &str>
Sourcefn find_crate_span(&self, unrenamed: &str) -> Option<Range<usize>>
fn find_crate_span(&self, unrenamed: &str) -> Option<Range<usize>>
Find a span for the dependency that specifies this unrenamed crate, if it’s unique.
rustc diagnostics (at least for public-in-private) mention the un-renamed
crate: if you have foo = { package = "bar" }
, the rustc diagnostic will
say “bar”.
This function does its best to find a span for “bar”, but it could fail if there are multiple candidates:
foo = { package = "bar" }
baz = { path = "../bar", package = "bar" }
Auto Trait Implementations§
impl Freeze for ManifestErrorContext
impl RefUnwindSafe for ManifestErrorContext
impl Send for ManifestErrorContext
impl Sync for ManifestErrorContext
impl Unpin for ManifestErrorContext
impl UnwindSafe for ManifestErrorContext
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>
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§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>
impl<T> ErasedDestructor for Twhere
T: 'static,
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: 288 bytes