В Haskell в качестве языковой функции возможно получить синтаксический анализатор из строки в произвольный тип данных: это называется Read
класс .Возможно ли это сделать в Rust?То есть, учитывая произвольный enum
, такой как:
#[derive(Debug)]
enum Foo {
A { x: u32, s: String },
B { v: Vec<u8> },
}
, и, учитывая, что Rust включает черту Debug
в качестве языковой функции, которая сериализует произвольный тип данных, можно также автоматически генерировать егосоответствующая Parse
черта?
Другими словами, есть ли функция Rust по умолчанию, которая позволяет мне получить функцию parse(&str) -> Foo
, такую, что для любой строки s
или parse(&s) == None
или format!("{:?}", parse(&s).unwrap()) == s
?