cargo::core::compiler

# Trait Executor

source

    pub trait Executor:
        Send
        + Sync
        + 'static {
        // Required method
        fn exec(
            &self,
            cmd: &ProcessBuilder,
            id: PackageId,
            target: &Target,
            mode: CompileMode,
            on_stdout_line: &mut dyn FnMut(&str) -> CargoResult<()>,
            on_stderr_line: &mut dyn FnMut(&str) -> CargoResult<()>,
        ) -> CargoResult<()>;

        // Provided methods
        fn init(&self, _build_runner: &BuildRunner<'_, '_>, _unit: &Unit) { ... }
        fn force_rebuild(&self, _unit: &Unit) -> bool { ... }
    }

Expand description

A glorified callback for executing calls to rustc. Rather than calling rustc directly, we’ll use an `Executor`, giving clients an opportunity to intercept the build calls.

## Required Methods§

source

#### fn exec( &self, cmd: &ProcessBuilder, id: PackageId, target: &Target, mode: CompileMode, on_stdout_line: &mut dyn FnMut(&str) -> CargoResult<()>, on_stderr_line: &mut dyn FnMut(&str) -> CargoResult<()>, ) -> CargoResult<()>

In case of an `Err`, Cargo will not continue with the build process for this package.

## Provided Methods§

source

#### fn init(&self, _build_runner: &BuildRunner<'_, '_>, _unit: &Unit)

Called after a rustc process invocation is prepared up-front for a given unit of work (may still be modified for runtime-known dependencies, when the work is actually executed).

source

#### fn force_rebuild(&self, _unit: &Unit) -> bool

Queried when queuing each unit of work. If it returns true, then the unit will always be rebuilt, independent of whether it needs to be.

## Implementors§

source§

### impl Executor for DefaultExecutor