#serde #typename #type #name

serde_type_name

lookup name of type for any struct or enum that derives serde Serialize

2 unstable releases

Uses old Rust 2015

0.2.0 Feb 24, 2019
0.1.0 Aug 24, 2018

#841 in Rust patterns

Download history 125/week @ 2022-06-02 231/week @ 2022-06-09 19/week @ 2022-06-16 98/week @ 2022-06-23 17/week @ 2022-06-30 45/week @ 2022-07-07 25/week @ 2022-07-14 30/week @ 2022-07-21 43/week @ 2022-07-28 31/week @ 2022-08-04 105/week @ 2022-08-11 57/week @ 2022-08-18 136/week @ 2022-08-25 166/week @ 2022-09-01 18/week @ 2022-09-08 8/week @ 2022-09-15

328 downloads per month
Used in light-curve-feature

MIT/Apache

12KB
241 lines

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 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());
}

Dependencies

~130–255KB