pub trait Target: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn display_name(&self) -> &'static str;
fn detect_paths(&self, home: &Path) -> Vec<PathBuf>;
fn install(&self, home: &Path) -> Result<InstallOutcome, String>;
// Provided method
fn hook_format(&self) -> Option<&dyn HookFormat> { ... }
}