cargo::util::rustc

Struct Rustc

source
pub struct Rustc {
    pub path: PathBuf,
    pub wrapper: Option<PathBuf>,
    pub workspace_wrapper: Option<PathBuf>,
    pub verbose_version: String,
    pub version: Version,
    pub host: InternedString,
    pub commit_hash: Option<String>,
    cache: Mutex<Cache>,
}
Expand description

Information on the rustc executable

Fields§

§path: PathBuf

The location of the exe

§wrapper: Option<PathBuf>

An optional program that will be passed the path of the rust exe as its first argument, and rustc args following this.

§workspace_wrapper: Option<PathBuf>

An optional wrapper to be used in addition to rustc.wrapper for workspace crates

§verbose_version: String

Verbose version information (the output of rustc -vV)

§version: Version

The rustc version (1.23.4-beta.2), this comes from verbose_version.

§host: InternedString

The host triple (arch-platform-OS), this comes from verbose_version.

§commit_hash: Option<String>

The rustc full commit hash, this comes from verbose_version.

§cache: Mutex<Cache>

Implementations§

source§

impl Rustc

source

pub fn new( path: PathBuf, wrapper: Option<PathBuf>, workspace_wrapper: Option<PathBuf>, rustup_rustc: &Path, cache_location: Option<PathBuf>, gctx: &GlobalContext, ) -> CargoResult<Rustc>

Runs the compiler at path to learn various pieces of information about it, with an optional wrapper.

If successful this function returns a description of the compiler along with a list of its capabilities.

source

pub fn process(&self) -> ProcessBuilder

Gets a process builder set up to use the found rustc version, with a wrapper if Some.

source

pub fn workspace_process(&self) -> ProcessBuilder

Gets a process builder set up to use the found rustc version, with a wrapper if Some.

source

pub fn process_no_wrapper(&self) -> ProcessBuilder

source

pub fn cached_output( &self, cmd: &ProcessBuilder, extra_fingerprint: u64, ) -> CargoResult<(String, String)>

Gets the output for the given command.

This will return the cached value if available, otherwise it will run the command and cache the output.

extra_fingerprint is extra data to include in the cache fingerprint. Use this if there is other information about the environment that may affect the output that is not part of cmd.

Returns a tuple of strings (stdout, stderr).

Trait Implementations§

source§

impl Debug for Rustc

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Rustc

§

impl RefUnwindSafe for Rustc

§

impl Send for Rustc

§

impl Sync for Rustc

§

impl Unpin for Rustc

§

impl UnwindSafe for Rustc

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.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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: 320 bytes