pub trait Tool<'tool>: Send + Sync + Describable<'tool> + Detector<'tool> + Resolvable<'tool> + Downloadable<'tool> + Verifiable<'tool> + Installable<'tool> + Executable<'tool> + Shimable<'tool> {
Show 14 methods
// Required methods
fn as_any(&self) -> &(dyn Any + 'static);
fn get_manifest(&self) -> Result<&Manifest, ProtoError>;
fn get_manifest_mut(&mut self) -> Result<&mut Manifest, ProtoError>;
fn get_tool_dir(&self) -> &Path;
// Provided methods
fn get_manifest_path(&self) -> PathBuf { ... }
fn before_setup<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn setup<'life0, 'life1, 'async_trait>(
&'life0 mut self,
initial_version: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<bool, ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait { ... }
fn setup_shims<'life0, 'async_trait>(
&'life0 mut self,
force: bool
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn is_setup<'life0, 'life1, 'async_trait>(
&'life0 mut self,
initial_version: &'life1 str
) -> Pin<Box<dyn Future<Output = Result<bool, ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait { ... }
fn after_setup<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn cleanup<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn before_teardown<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn teardown<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<bool, ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
fn after_teardown<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), ProtoError>> + Send + 'async_trait, Global>>
where 'life0: 'async_trait,
Self: 'async_trait { ... }
}