Build Status Current Crates.io Version

Serde Type Name

Serde Type Name - lookup name of type for any struct or enum that derives serde Serialize. This is completely based on

https://stackoverflow.com/questions/46612327/using-serde-to-get-a-types-name-as-string-when-the-type-is-only-serialize

Usage

``` extern crate serdetypename; extern crate serde;

[macro_use]

extern crate serde_derive;

use serde::Serialize; use serdetypename::type_name;

[derive(Serialize)]

enum SimpleEnum { A(i32), B, C { code: i32 }, }

[derive(Serialize)]

struct SimpleStruct { pub a: i32, }

[derive(Serialize)]

struct GenericStruct { pub inner: T, }

fn main() { asserteq!("SimpleEnum", typename(&SimpleEnum::A(10)).unwrap()); asserteq!("SimpleEnum", typename(&SimpleEnum::B).unwrap()); asserteq!("SimpleEnum", typename(&SimpleEnum::C { code: 32 }).unwrap());

assert_eq!("SimpleStruct", type_name(&SimpleStruct { a: 20 }).unwrap());

let gs = GenericStruct { inner: 32 };
assert_eq!("GenericStruct", type_name(&gs).unwrap());

let gs_enum = GenericStruct {
    inner: SimpleEnum::B,
};
assert_eq!("GenericStruct", type_name(&gs_enum).unwrap());
assert_eq!("SimpleEnum", type_name(&gs_enum.inner).unwrap());

} ```