pub struct Options {Show 42 fields
pub manifest_path: Option<PathBuf>,
pub name: Option<String>,
pub entrypoint: Option<String>,
pub profile: String,
pub workspace: bool,
pub packages: Vec<String>,
pub target: Option<String>,
pub target_type: Option<TargetType>,
pub optimize: OptLevel,
pub debug: DebugInfo,
pub output_types: OutputTypes,
pub search_paths: Vec<PathBuf>,
pub link_libraries: Vec<LinkLibrary>,
pub link_modules: Vec<(PathBuf, String)>,
pub sysroot: Option<PathBuf>,
pub midenup_home: Option<PathBuf>,
pub toolchain: Option<String>,
pub color: ColorChoice,
pub diagnostics: DiagnosticsConfig,
pub current_dir: PathBuf,
pub target_dir: PathBuf,
pub output_dir: Option<PathBuf>,
pub output_file: Option<OutputFile>,
pub remap_path_prefixes: Vec<RemapPathPrefix>,
pub print_hir_source_locations: bool,
pub stop_after: Option<String>,
pub parse_only: bool,
pub analyze_only: bool,
pub link_only: bool,
pub no_link: bool,
pub lint: bool,
pub print_cfg_after_all: bool,
pub print_cfg_after_pass: Vec<String>,
pub print_ir_before_stage: Vec<String>,
pub print_ir_after_all: bool,
pub print_ir_after_pass: Vec<String>,
pub print_ir_after_modified: bool,
pub print_ir_filters: Vec<IrFilter>,
pub save_temps: bool,
pub rustflags: Option<String>,
pub cargo_frontmatter: bool,
pub flags: CompileFlags,
}Expand description
This struct contains all of the configuration options for the compiler
Fields§
§manifest_path: Option<PathBuf>The path to the current project manifest, if present
name: Option<String>The name of the program being compiled
entrypoint: Option<String>The name of the function to call as the entrypoint
profile: StringThe name of the build profile to use
workspace: boolBuild all packages in the current workspace (used by cargo miden)
packages: Vec<String>Build the specified packages in the current workspace (used by cargo miden)
target: Option<String>The name of the current project target being compiled
target_type: Option<TargetType>The type of target that was requested
optimize: OptLevelThe optimization level for the current program
debug: DebugInfoThe level of debugging info for the current program
output_types: OutputTypesThe type of outputs to emit
search_paths: Vec<PathBuf>The paths in which to search for Miden Assembly libraries to link against
link_libraries: Vec<LinkLibrary>The set of Miden libraries to link against
link_modules: Vec<(PathBuf, String)>A set of Miden Assembly modules to link against
sysroot: Option<PathBuf>The path to the current toolchain directory, which contains libraries and other tools that the compiler may use.
This is expected to be set by midenup when the compiler is invoked via miden CLI
midenup_home: Option<PathBuf>The path to midenup’s home directory
This is expected to be set by midenup when the compiler is invoked via miden CLI
toolchain: Option<String>The name of the current midenup toolchain
This is expected to be set by midenup when the compiler is invoked via miden CLI
color: ColorChoiceWhether, and how, to color terminal output
diagnostics: DiagnosticsConfigThe current diagnostics configuration
current_dir: PathBufThe current working directory of the compiler
target_dir: PathBufThe target directory of the compiler
output_dir: Option<PathBuf>The artifact output directory of the compiler
output_file: Option<OutputFile>The output file requested by the user, if requested
remap_path_prefixes: Vec<RemapPathPrefix>Path prefixes to remap for any file paths encoded in debug info
print_hir_source_locations: boolPrint source location information in HIR output
stop_after: Option<String>Stop compilation after the named checkpoint, as --stop-after asked.
An alias declared by the route being compiled — parse, analyze, transform,
lower, assemble — or a fully-qualified checkpoint id such as hir.initial. Which
names are valid depends on the frontend the input selects, so the value is carried
uninterpreted and resolved against that route once it is known; an unrecognized one is
reported there, listing the names that route does accept.
This is the general form of the -C stop flags below, and naming both is a usage error
rather than a precedence rule.
parse_only: boolOnly parse inputs
analyze_only: boolOnly perform semantic analysis on the input
link_only: boolRun the linker on the inputs, but do not generate Miden Assembly
no_link: boolGenerate Miden Assembly from the inputs without the linker
lint: boolRun the experimental Miden Assembly linter prior to codegen
This linter uses the HIR dataflow analysis framework to check for issues such as unconstrained advice usage.
print_cfg_after_all: boolPrint CFG to stdout after each pass
print_cfg_after_pass: Vec<String>Print CFG to stdout each time the named passes are applied
print_ir_before_stage: Vec<String>Print IR to stdout at the start of each stage
print_ir_after_all: boolPrint IR to stdout after each pass
print_ir_after_pass: Vec<String>Print IR to stdout each time the named passes are applied
print_ir_after_modified: boolOnly print the IR if the pass modified the IR structure.
print_ir_filters: Vec<IrFilter>Apply filters to what IR is printed, when printing is enabled
save_temps: boolSave intermediate artifacts in memory during compilation
rustflags: Option<String>Custom RUSTFLAGS to set when building Rust
cargo_frontmatter: boolLook for cargo -Zscript-style frontmatter when compiling standalone Rust sources
flags: CompileFlagsWe store any leftover argument matches in the session options for use by any downstream crates that register custom flags
Implementations§
Source§impl Options
impl Options
pub fn new( name: Option<String>, target: Option<TargetType>, current_dir: PathBuf, target_dir: PathBuf, output_dir: Option<PathBuf>, sysroot: Option<PathBuf>, ) -> Self
pub fn with_color(self: Box<Self>, color: ColorChoice) -> Box<Self>
pub fn with_verbosity(self: Box<Self>, verbosity: Verbosity) -> Box<Self>
pub fn with_debug_info(self: Box<Self>, debug: DebugInfo) -> Box<Self>
pub fn with_optimization(self: Box<Self>, level: OptLevel) -> Box<Self>
pub fn with_warnings(self: Box<Self>, warnings: Warnings) -> Box<Self>
pub fn with_output_types( self: Box<Self>, output_types: OutputTypes, output_file: Option<OutputFile>, ) -> Box<Self>
Sourcepub fn into_session(
self: Box<Self>,
input: InputFile,
emitter: Option<Arc<dyn Emitter>>,
source_manager: Option<Arc<dyn SourceManager + Send + Sync>>,
) -> Result<Session, Report>
pub fn into_session( self: Box<Self>, input: InputFile, emitter: Option<Arc<dyn Emitter>>, source_manager: Option<Arc<dyn SourceManager + Send + Sync>>, ) -> Result<Session, Report>
Use this configuration to obtain a crate::Session used for compilation
Sourcepub fn default_emitter(&self) -> Arc<dyn Emitter> ⓘ
pub fn default_emitter(&self) -> Arc<dyn Emitter> ⓘ
Get a new Emitter based on the current options.
Sourcepub fn emit_source_locations(&self) -> bool
pub fn emit_source_locations(&self) -> bool
Returns true if source location information should be emitted by the compiler
Sourcepub fn emit_debug_decorators(&self) -> bool
pub fn emit_debug_decorators(&self) -> bool
Returns true if rich debugging information should be emitted by the compiler. This enables AssemblyOp decorators which carry source location info for runtime errors.
Sourcepub fn emit_debug_assertions(&self) -> bool
pub fn emit_debug_assertions(&self) -> bool
Returns true if debug assertions are enabled
Sourcepub fn target_requires_protocol(&self) -> bool
pub fn target_requires_protocol(&self) -> bool
Returns true if the requested target type is a protocol target
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Options
impl !UnwindSafe for Options
impl Freeze for Options
impl Send for Options
impl Sync for Options
impl Unpin for Options
impl UnsafeUnpin for Options
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more