pub struct ProjectAssembler<'a, S: PackageCache> { /* private fields */ }Implementations§
Source§impl<'a, S> ProjectAssembler<'a, S>where
S: PackageCache,
impl<'a, S> ProjectAssembler<'a, S>where
S: PackageCache,
pub fn with_source_provider( &mut self, provider: impl ProjectSourceProvider + 'static, ) -> &mut Self
Sourcepub fn project(&self) -> &ProjectPackage
pub fn project(&self) -> &ProjectPackage
Get the project being assembled
Sourcepub fn assemble(
&mut self,
target_selector: ProjectTargetSelector<'_>,
profile_name: &str,
) -> Result<Arc<MastPackage>, Report>
pub fn assemble( &mut self, target_selector: ProjectTargetSelector<'_>, profile_name: &str, ) -> Result<Arc<MastPackage>, Report>
Assemble a target of the current project matching target_selector, using the configuration
under the profile profile_name.
Returns an error if:
target_selectorcannot find a matching target in the current projectprofile_nameis not a profile defined in this project- An error occurs during assembly of the project or one of its dependencies
- Assembly was interrupted by a source provider for the project or one of its dependencies
Sourcepub fn assemble_interruptible(
&mut self,
target_selector: ProjectTargetSelector<'_>,
profile_name: &str,
) -> Result<ControlFlow<AssemblyInterrupted, Arc<MastPackage>>, Report>
pub fn assemble_interruptible( &mut self, target_selector: ProjectTargetSelector<'_>, profile_name: &str, ) -> Result<ControlFlow<AssemblyInterrupted, Arc<MastPackage>>, Report>
Like Self::assemble, but allows for assembly to be interrupted by source providers
early.
Returns ControlFlow representing whether assembly should break early (i.e. it was
interrupted), or continue as normal (i.e. it succeeded, and a package was produced).
When assembly is interrupted early, a AssemblyInterrupted value is returned via
ControlFlow::Break, identifying what package (and target) caused the interruption, and
what role that package/target played in assembly of the root selected target.
Returns an error if:
target_selectorcannot find a matching target in the current projectprofile_nameis not a profile defined in this project- An error occurs during assembly of the project or one of its dependencies
Sourcepub fn assemble_source_package(
&mut self,
package_id: PackageId,
project: Arc<ProjectPackage>,
target: &Target,
profile_name: &str,
package_role: InterruptedTargetRole,
required_lib: Option<ResolvedPackage>,
sources: Option<ProjectSourceInputs>,
source_provenance: Option<ProjectSourceProvenanceInputs>,
cache: &mut BTreeMap<PackageId, ResolvedPackage>,
) -> Result<ControlFlow<AssemblyInterrupted, ResolvedPackage>, Report>
pub fn assemble_source_package( &mut self, package_id: PackageId, project: Arc<ProjectPackage>, target: &Target, profile_name: &str, package_role: InterruptedTargetRole, required_lib: Option<ResolvedPackage>, sources: Option<ProjectSourceInputs>, source_provenance: Option<ProjectSourceProvenanceInputs>, cache: &mut BTreeMap<PackageId, ResolvedPackage>, ) -> Result<ControlFlow<AssemblyInterrupted, ResolvedPackage>, Report>
This is a low-level utility function of the project assembly infrastructure for assembling a project target whose sources and source provenance may have already been computed by the caller.
This API supports early interruption by source providers, represented by the ControlFlow
value which is returned. The AssemblyInterrupted value carried in the Break variant
indicates the package/target which was interrupted, and the role that target played in
assembly of the provided project and target.
In almost all cases you should prefer to use ProjectAssembler::assemble or
ProjectAssembler::assemble_interruptible instead.
Callers are required to uphold the following invariants:
package_idmust be the package identifier forprojectin the current dependency graphtargetmust be a target extracted fromprojectrequired_libmust be set if assembly oftargetwould depend on another target of the same project (i.e. an executable target implicitly depends on the library target).
It is invalid to provide source_provenance without sources - doing so will trigger an
assertion.
Auto Trait Implementations§
impl<'a, S> !RefUnwindSafe for ProjectAssembler<'a, S>
impl<'a, S> !Send for ProjectAssembler<'a, S>
impl<'a, S> !Sync for ProjectAssembler<'a, S>
impl<'a, S> !UnwindSafe for ProjectAssembler<'a, S>
impl<'a, S> Freeze for ProjectAssembler<'a, S>
impl<'a, S> Unpin for ProjectAssembler<'a, S>
impl<'a, S> UnsafeUnpin for ProjectAssembler<'a, S>
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> 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