11 个版本

0.1.10 2024年2月12日
0.1.9 2023年9月28日
0.1.8 2023年5月26日
0.1.7 2023年1月27日
0.1.0 2019年12月29日

#115Rust 模式

Download history 3018/week @ 2024-04-08 3360/week @ 2024-04-15 3626/week @ 2024-04-22 4179/week @ 2024-04-29 3085/week @ 2024-05-06 2829/week @ 2024-05-13 3375/week @ 2024-05-20 3429/week @ 2024-05-27 2913/week @ 2024-06-03 3154/week @ 2024-06-10 3079/week @ 2024-06-17 3913/week @ 2024-06-24 1722/week @ 2024-07-01 3023/week @ 2024-07-08 3588/week @ 2024-07-15 3286/week @ 2024-07-22

11,906 每月下载量
用于 111 个crate(19 直接)

MIT/Apache

60KB
1K SLoC

🪶 Tynm -- 类型名称

Crates.io docs.rs CI Coverage Status

返回具有指定模块段数的类型名称作为 String

用法

将以下内容添加到 Cargo.toml

tynm = "0.1.10"

代码中

#[rustfmt::skip]
assert_eq!(
    core::any::type_name::<Option<String>>(), "core::option::Option<alloc::string::String>"
);

#[rustfmt::skip]
let tuples = vec![
    (tynm::type_name::<Option<String>>(),    "Option<String>"),
    (tynm::type_namem::<Option<String>>(1),  "core::..::Option<alloc::..::String>"),
    (tynm::type_namen::<Option<String>>(1),  "..::option::Option<..::string::String>"),
    // 1 segment from most and least significant modules.
    (tynm::type_namemn::<rust_out::two::three::Struct>(1, 1), "rust_out::..::three::Struct"),
    // traits
    (tynm::type_name::<dyn core::fmt::Debug>(), "dyn Debug"),
];

tuples
    .iter()
    .for_each(|(left, right)| assert_eq!(left, right));

动机

Rust 1.38 中稳定的 core::any::type_name 函数返回所有模块段的完全限定类型名。这在错误消息中很难阅读,尤其是在泛型类型的情况下。

通常,简单的类型名更易读,足以区分错误中引用的类型。

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献,均可作为上述双重许可,不附加任何额外条款或条件。

依赖关系

~0.8–1.2MB
~23K SLoC