Conveniently serialize and deserialize rust types into / from their serde name.
```rust use serde::{Serialize, Deserialize}; use serdetypename::{tostr, from_str};
/// Enums
enum Enum { UnitVariant, #[serde(rename = "RENAMED")] Renamed, HoldsData(u8), HoldsDataAsTuple(u8, u8), HoldsDataAsStruct { field: u8 } }
// Safe to serialize, held data gets discarded asserteq!(tostr(&Enum::UnitVariant).unwrap(), "UnitVariant"); asserteq!(tostr(&Enum::Renamed).unwrap(), "RENAMED"); asserteq!(tostr(&Enum::HoldsData(0)).unwrap(), "HoldsData"); asserteq!(tostr(&Enum::HoldsDataAsTuple(0, 0)).unwrap(), "HoldsDataAsTuple"); asserteq!(tostr(&Enum::HoldsDataAsStruct { field: 0 }).unwrap(), "HoldsDataAsStruct");
// Safe to deserialize since no data is held
asserteq!(fromstr::
/// Structs
struct UnitStruct;
asserteq!(tostr(&UnitStruct).unwrap(), "UnitStruct");
asserteq!(fromstr::
struct TupleStruct(u64, u64);
asserteq!(tostr(&TupleStruct(0, 0)).unwrap(), "TupleStruct");
assert!(fromstr::
struct Struct {
field: u8
}
asserteq!(tostr(&Struct { field: 123 }).unwrap(), "Struct");
assert!(fromstr::
This crate originated as a fork of serde_variant
which is maintained by
Daniel Mueller deso@posteo.net