pub trait Config { fn url(&self) -> String; fn libs(&self) -> Vec; } pub struct LinuxX86_64; impl Config for LinuxX86_64 { fn url(&self) -> String { "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-linux-x86-64.tar.gz".to_string() } fn libs(&self) -> Vec { vec!["libwebp.a".to_string(), "libsharpyuv.a".to_string()] } } pub struct LinuxAarch64; impl Config for LinuxAarch64 { fn url(&self) -> String { "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-linux-aarch64.tar.gz".to_string() } fn libs(&self) -> Vec { vec!["libwebp.a".to_string(), "libsharpyuv.a".to_string()] } } pub struct MacosX86_64; impl Config for MacosX86_64 { fn url(&self) -> String { "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-mac-x86-64.tar.gz".to_string() } fn libs(&self) -> Vec { vec!["libwebp.a".to_string(), "libsharpyuv.a".to_string()] } } pub struct MacosAarch64; impl Config for MacosAarch64 { fn url(&self) -> String { "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-mac-arm64.tar.gz".to_string() } fn libs(&self) -> Vec { vec!["libwebp.a".to_string(), "libsharpyuv.a".to_string()] } } pub struct WindowsX86_64; impl Config for WindowsX86_64 { fn url(&self) -> String { "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-windows-x64.zip".to_string() } fn libs(&self) -> Vec { vec!["libwebp.lib".to_string()] } }