pub trait CompilerVersionManager:
Debug
+ Send
+ Sync {
type Compiler: Compiler;
// Required methods
fn all_versions(&self) -> Vec<CompilerVersion>;
fn installed_versions(&self) -> Vec<CompilerVersion>;
fn install(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError>;
fn get_installed(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError>;
// Provided method
fn get_or_install(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError> { ... }
}
Expand description
Abstraction over a compiler version manager. Currently main implementation is
SolcVersionManager
. Acts as a factory of Compilers.
Required Associated Types§
Required Methods§
Sourcefn all_versions(&self) -> Vec<CompilerVersion>
fn all_versions(&self) -> Vec<CompilerVersion>
Returns all versions available locally and remotely.
Sourcefn installed_versions(&self) -> Vec<CompilerVersion>
fn installed_versions(&self) -> Vec<CompilerVersion>
Returns all versions available locally.
Sourcefn install(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError>
fn install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Installs a compiler version and returns the compiler instance.
Sourcefn get_installed(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError>
fn get_installed( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Returns the compiler instance for the given version if it is installed. If not, returns an error.
Provided Methods§
Sourcefn get_or_install(
&self,
version: &Version,
) -> Result<Self::Compiler, VersionManagerError>
fn get_or_install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Returns the compiler instance for the given version if it is installed. If not, installs it.
Implementations on Foreign Types§
Source§impl<'a, T: 'a + CompilerVersionManager + ?Sized> CompilerVersionManager for &'a T
impl<'a, T: 'a + CompilerVersionManager + ?Sized> CompilerVersionManager for &'a T
type Compiler = <T as CompilerVersionManager>::Compiler
fn all_versions(&self) -> Vec<CompilerVersion>
fn installed_versions(&self) -> Vec<CompilerVersion>
fn install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_installed( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_or_install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Source§impl<T: CompilerVersionManager + ?Sized> CompilerVersionManager for Box<T>
impl<T: CompilerVersionManager + ?Sized> CompilerVersionManager for Box<T>
type Compiler = <T as CompilerVersionManager>::Compiler
fn all_versions(&self) -> Vec<CompilerVersion>
fn installed_versions(&self) -> Vec<CompilerVersion>
fn install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_installed( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_or_install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Source§impl<T: CompilerVersionManager + ?Sized> CompilerVersionManager for Arc<T>
impl<T: CompilerVersionManager + ?Sized> CompilerVersionManager for Arc<T>
type Compiler = <T as CompilerVersionManager>::Compiler
fn all_versions(&self) -> Vec<CompilerVersion>
fn installed_versions(&self) -> Vec<CompilerVersion>
fn install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_installed( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
fn get_or_install( &self, version: &Version, ) -> Result<Self::Compiler, VersionManagerError>
Implementors§
Source§impl CompilerVersionManager for SolcVersionManager
Available on crate feature svm-solc
only.
impl CompilerVersionManager for SolcVersionManager
Available on crate feature
svm-solc
only.