Skip to main content

RustBuild

Struct RustBuild 

Source
pub struct RustBuild { /* private fields */ }
Expand description

Represents a Rust build for a specific target triple.

Implementations§

Source§

impl RustBuild

Source

pub fn new(path: impl AsRef<Path>, triple: Triple) -> Self

Create a new rust build for the given path and target triple.

Source

pub fn with_target_dir(self, target_dir: impl Into<PathBuf>) -> Self

Use an explicit Cargo target directory.

Source

pub fn with_sccache(self, sccache_path: PathBuf) -> Self

Set the sccache path for compilation caching.

When set, RUSTC_WRAPPER will be configured to use sccache, which can significantly improve incremental build times.

Source

pub fn with_feature(self, feature: impl Into<String>) -> Self

Add a Cargo feature to enable during the build.

Features are passed to cargo via --features.

Source

pub fn with_features( self, features: impl IntoIterator<Item = impl Into<String>>, ) -> Self

Add multiple Cargo features to enable during the build.

Source

pub fn features(&self) -> &[String]

Cargo features this build passes via --features.

Source

pub fn with_rustc_flag(self, flag: impl Into<String>) -> Self

Add a rustc flag to the build via RUSTFLAGS.

Source

pub fn with_final_rustc_arg(self, flag: impl Into<String>) -> Self

Add a rustc flag that applies to the final crate only.

The flag is passed as a trailing cargo rustc argument instead of through RUSTFLAGS, so dependency unit fingerprints stay identical across builds that differ only in how their final artifact links. See the field documentation on final_rustc_args for why link arguments must take this route.

Source

pub fn with_build_std(self, toolchain: impl Into<String>) -> Self

Build the Rust standard library from source with -Zbuild-std on the named toolchain (a nightly with rust-src), sharing one libstd dylib across the graph.

The build runs Cargo under the water rustc wrapper (crate::rustc_wrapper): Cargo strips dylib from std’s crate types under -Zbuild-std, and the wrapper restores it so the produced libstd-*.so carries the same strict version hash as the rlib every dependent is compiled against. The wrapper also publishes the dylib into the profile’s deps/ directory, where RustDynamicLibraries::resolve finds it before the toolchain’s prebuilt copy.

Source

pub fn with_preferred_dynamic_linking(self) -> Self

Prefer dynamic Rust dependencies and emit loader search paths for them.

Source

pub fn with_linkage( self, linkage: RustLinkage, development_feature: &str, loader_search_path: Option<&str>, ) -> Self

Configure this build for the selected Rust runtime linkage.

A shared-runtime development build enables the project’s dev feature (which resolves the shared waterui-dylib runtime), prefers dynamic linking, and — when the platform’s loader needs one — embeds a loader search path into the final artifact only. A static packaging build needs none of this.

Source

pub fn with_crate_type_override(self, crate_type: impl Into<String>) -> Self

Override the library crate type passed to rustc.

Source

pub fn with_env( self, key: impl Into<String>, value: impl Into<OsString>, ) -> Self

Add an environment variable for the cargo build process.

Source

pub fn with_envs( self, envs: impl IntoIterator<Item = (String, OsString)>, ) -> Self

Add multiple environment variables for the cargo build process.

Source

pub fn with_progress(self, progress: BuildProgress) -> Self

Attach a compile-progress sink the cargo invocation reports to.

Each CompileEvent is parsed from cargo’s own stderr stream, so the report is driven by build output rather than a timer.

Source

pub const fn triple(&self) -> &Triple

Get the target triple for this build.

Source

pub async fn dev_build(&self) -> Result<BuiltTarget, RustBuildError>

Build rust library in development mode.

Will produce debug symbols and less optimizations for faster builds.

§Errors
  • RustBuildError::FailToExecuteCargoBuild: If there was an error executing the cargo build command.
  • RustBuildError::FailToBuildRustLibrary: If there was an error building the Rust library.
Source

pub async fn release_build(&self) -> Result<BuiltTarget, RustBuildError>

Build rust library in release mode.

§Errors
  • RustBuildError::FailToExecuteCargoBuild: If there was an error executing the cargo build command.
  • RustBuildError::FailToBuildRustLibrary: If there was an error building the Rust library.
Source

pub async fn build_lib( &self, release: bool, ) -> Result<BuiltTarget, RustBuildError>

Build the crate’s library target.

The returned BuiltTarget carries the profile directory plus the artifact Cargo reported. A crate emitting several library crate types needs Self::with_crate_type_override to say which one is wanted — the build fails rather than guess.

§Errors
  • RustBuildError::FailToExecuteCargoBuild: If there was an error executing the cargo build command.
  • RustBuildError::FailToBuildRustLibrary: If there was an error building the Rust library.
Source

pub async fn build_dylib( &self, release: bool, ) -> Result<PathBuf, RustBuildError>

Build a dynamic library (cdylib) and return the full path to the dylib file.

The path is Cargo’s own compiler-artifact report, so the returned file is the one this build wrote even when another project’s identically named crate shares the target directory.

§Errors
  • RustBuildError::FailToExecuteCargoBuild: If there was an error executing the cargo build command.
  • RustBuildError::FailToBuildRustLibrary: If the library was not found after building.
Source

pub async fn build_binary( &self, binary_name: &str, release: bool, ) -> Result<PathBuf, RustBuildError>

Builds one named binary and returns its full output path.

The path is Cargo’s own compiler-artifact report (executable of the --bin unit), so it is the binary this build wrote even when another project’s identically named crate shares the target directory.

§Errors

Returns an error when Cargo fails or the expected binary is missing.

Source

pub async fn dylib_path( &self, crate_name: &str, release: bool, ) -> Result<PathBuf, RustBuildError>

Compute the expected dylib output path without building.

This uses cargo metadata to resolve the target directory to avoid assuming a fixed target/ path.

§Errors

Returns an error if Cargo metadata cannot be read.

Source

pub async fn lib_output_dir( &self, release: bool, ) -> Result<PathBuf, RustBuildError>

Resolve the Cargo library artifact directory for this build target and profile.

§Errors

Returns an error if Cargo metadata cannot be read for this build target.

Trait Implementations§

Source§

impl Clone for RustBuild

Source§

fn clone(&self) -> RustBuild

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RustBuild

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<U, T> ToOwnedObj<U> for T
where U: FromObjRef<T>,

Source§

fn to_owned_obj(&self, data: FontData<'_>) -> U

Convert this type into T, using the provided data to resolve any offsets.
Source§

impl<U, T> ToOwnedTable<U> for T
where U: FromTableRef<T>,

Source§

fn to_owned_table(&self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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