Toolchain

Trait Toolchain 

Source
pub trait Toolchain: Send + Sync {
    type Installation: Installation;

    // Required method
    fn check(
        &self,
    ) -> impl Future<Output = Result<(), ToolchainError<Self::Installation>>> + Send;
}
Expand description

Trait for toolchain dependencies that can be checked and installed.

Implementors represent a specific toolchain configuration (e.g., Rust with certain targets, Android SDK with specific components). The associated Installation type preserves full type information through the composition, enabling zero-cost abstractions for parallel/sequential installation plans.

Required Associated Types§

Source

type Installation: Installation

The installation type returned by fix().

Required Methods§

Source

fn check( &self, ) -> impl Future<Output = Result<(), ToolchainError<Self::Installation>>> + Send

Check if the toolchain is properly installed.

Returns Ok(()) if all components are available, or Err describing what is missing.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Toolchain for Infallible

Source§

impl Toolchain for ()

Source§

impl<T0: Toolchain> Toolchain for (T0,)

Source§

impl<T0: Toolchain, T1: Toolchain> Toolchain for (T0, T1)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain> Toolchain for (T0, T1, T2)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain> Toolchain for (T0, T1, T2, T3)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain> Toolchain for (T0, T1, T2, T3, T4)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain, T10: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain, T10: Toolchain, T11: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain, T10: Toolchain, T11: Toolchain, T12: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain, T10: Toolchain, T11: Toolchain, T12: Toolchain, T13: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

impl<T0: Toolchain, T1: Toolchain, T2: Toolchain, T3: Toolchain, T4: Toolchain, T5: Toolchain, T6: Toolchain, T7: Toolchain, T8: Toolchain, T9: Toolchain, T10: Toolchain, T11: Toolchain, T12: Toolchain, T13: Toolchain, T14: Toolchain> Toolchain for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Implementors§