diff --git a/src/lib.rs b/src/lib.rs index 6f690bb..c67b2b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,6 +61,18 @@ macro_rules! lsp_enum { } } } + + impl std::convert::TryFrom<&String> for $typ { + type Error = &'static str; + fn try_from(value: &String) -> Result { + match value { + $( + _ if *value == format!("{:?}", Self::$name) => Ok(Self::$name), + )* + _ => Err("unknown enum variant"), + } + } + } } }