Struct rustc_driver::RunCompiler
source · pub struct RunCompiler<'a, 'b> {
pub(crate) at_args: &'a [String],
pub(crate) callbacks: &'b mut (dyn Callbacks + Send),
pub(crate) file_loader: Option<Box<dyn FileLoader + Sync + Send>>,
pub(crate) make_codegen_backend: Option<Box<dyn FnOnce(&Options) -> Box<dyn CodegenBackend> + Send>>,
pub(crate) using_internal_features: Arc<AtomicBool>,
}
Expand description
This is the primary entry point for rustc.
Fields§
§at_args: &'a [String]
§callbacks: &'b mut (dyn Callbacks + Send)
§file_loader: Option<Box<dyn FileLoader + Sync + Send>>
§make_codegen_backend: Option<Box<dyn FnOnce(&Options) -> Box<dyn CodegenBackend> + Send>>
§using_internal_features: Arc<AtomicBool>
Implementations§
source§impl<'a, 'b> RunCompiler<'a, 'b>
impl<'a, 'b> RunCompiler<'a, 'b>
pub fn new( at_args: &'a [String], callbacks: &'b mut (dyn Callbacks + Send), ) -> RunCompiler<'a, 'b>
sourcepub fn set_make_codegen_backend(
&mut self,
make_codegen_backend: Option<Box<dyn FnOnce(&Options) -> Box<dyn CodegenBackend> + Send>>,
) -> &mut RunCompiler<'a, 'b>
pub fn set_make_codegen_backend( &mut self, make_codegen_backend: Option<Box<dyn FnOnce(&Options) -> Box<dyn CodegenBackend> + Send>>, ) -> &mut RunCompiler<'a, 'b>
Set a custom codegen backend.
Has no uses within this repository, but is used by bjorn3 for “the hotswapping branch of cg_clif” for “setting the codegen backend from a custom driver where the custom codegen backend has arbitrary data.” (See #102759.)
sourcepub fn set_file_loader(
&mut self,
file_loader: Option<Box<dyn FileLoader + Sync + Send>>,
) -> &mut RunCompiler<'a, 'b>
pub fn set_file_loader( &mut self, file_loader: Option<Box<dyn FileLoader + Sync + Send>>, ) -> &mut RunCompiler<'a, 'b>
Load files from sources other than the file system.
Has no uses within this repository, but may be used in the future by bjorn3 for “hooking rust-analyzer’s VFS into rustc at some point for running rustc without having to save”. (See #102759.)
sourcepub fn set_using_internal_features(
self,
using_internal_features: Arc<AtomicBool>,
) -> RunCompiler<'a, 'b>
pub fn set_using_internal_features( self, using_internal_features: Arc<AtomicBool>, ) -> RunCompiler<'a, 'b>
Set the session-global flag that checks whether internal features have been used, suppressing the message about submitting an issue in ICEs when enabled.
sourcepub fn run(self) -> Result<(), ErrorGuaranteed>
pub fn run(self) -> Result<(), ErrorGuaranteed>
Parse args and run the compiler.
Auto Trait Implementations§
impl<'a, 'b> Freeze for RunCompiler<'a, 'b>
impl<'a, 'b> !RefUnwindSafe for RunCompiler<'a, 'b>
impl<'a, 'b> Send for RunCompiler<'a, 'b>
impl<'a, 'b> !Sync for RunCompiler<'a, 'b>
impl<'a, 'b> Unpin for RunCompiler<'a, 'b>
impl<'a, 'b> !UnwindSafe for RunCompiler<'a, 'b>
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, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<T> Filterable for T
impl<T> Filterable for T
source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
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> 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 moresource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
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: 72 bytes