pub trait ArtifactHandler {
fn directory_extension(&self) -> &str;
fn extension(&self) -> &str;
fn classifier(&self) -> Option<&str> {
None
}
fn handles(&self, packaging: &str) -> bool;
}
pub struct DefaultArtifactHandler {
extension: String,
}
impl DefaultArtifactHandler {
pub fn new(extension: impl Into<String>) -> Self {
Self {
extension: extension.into(),
}
}
}
impl ArtifactHandler for DefaultArtifactHandler {
fn directory_extension(&self) -> &str {
&self.extension
}
fn extension(&self) -> &str {
&self.extension
}
fn handles(&self, packaging: &str) -> bool {
packaging == self.extension
}
}