diff --git a/crates/compiler/roc_target/src/lib.rs b/crates/compiler/roc_target/src/lib.rs index 269e2ddf10..4f4bafa91c 100644 --- a/crates/compiler/roc_target/src/lib.rs +++ b/crates/compiler/roc_target/src/lib.rs @@ -3,7 +3,7 @@ // See github.com/roc-lang/roc/issues/800 for discussion of the large_enum_variant check. #![allow(clippy::large_enum_variant)] -use strum_macros::{EnumCount, EnumIter, IntoStaticStr}; +use strum_macros::{EnumCount, EnumIter, EnumString, IntoStaticStr}; use target_lexicon::Triple; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -160,7 +160,7 @@ impl From for Architecture { } } -#[derive(Debug, Copy, Clone, EnumIter, IntoStaticStr, PartialEq, Eq, Default)] +#[derive(Debug, Copy, Clone, EnumIter, EnumString, IntoStaticStr, PartialEq, Eq, Default)] pub enum Target { #[strum(serialize = "system")] #[default] @@ -276,24 +276,6 @@ impl std::fmt::Display for Target { } } -impl std::str::FromStr for Target { - type Err = String; - - fn from_str(string: &str) -> Result { - match string { - "system" => Ok(Target::System), - "linux-x86-32" => Ok(Target::LinuxX32), - "linux-x86-64" => Ok(Target::LinuxX64), - "linux-arm-64" => Ok(Target::LinuxArm64), - "macos-x86-64" => Ok(Target::MacX64), - "macos-arm-64" => Ok(Target::MacArm64), - "windows-x86-64" => Ok(Target::WinX64), - "wasm-32" => Ok(Target::Wasm32), - _ => Err(format!("Roc does not know how to compile to {}", string)), - } - } -} - pub fn get_target_triple_str(target: &target_lexicon::Triple) -> Option<&'static str> { match target { target_lexicon::Triple {