Crates.io | serde_type_name |
lib.rs | serde_type_name |
version | 0.2.0 |
source | src |
created_at | 2018-08-24 18:29:27.896996 |
updated_at | 2019-02-24 11:01:07.624975 |
description | lookup name of type for any struct or enum that derives serde Serialize |
homepage | https://github.com/mmrath/serde_type_name |
repository | |
max_upload_size | |
id | 81142 |
size | 23,693 |
Serde Type Name - lookup name of type for any struct or enum that derives serde Serialize. This is completely based on
extern crate serde_type_name;
extern crate serde;
#[macro_use]
extern crate serde_derive;
use serde::Serialize;
use serde_type_name::type_name;
#[derive(Serialize)]
enum SimpleEnum {
A(i32),
B,
C { code: i32 },
}
#[derive(Serialize)]
struct SimpleStruct {
pub a: i32,
}
#[derive(Serialize)]
struct GenericStruct<T: Serialize> {
pub inner: T,
}
fn main() {
assert_eq!("SimpleEnum", type_name(&SimpleEnum::A(10)).unwrap());
assert_eq!("SimpleEnum", type_name(&SimpleEnum::B).unwrap());
assert_eq!("SimpleEnum", type_name(&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());
}