9 个版本

0.1.6 2023年7月27日
0.1.5 2023年3月4日
0.1.3 2023年2月24日
0.1.1 2022年10月17日
0.0.2 2022年9月25日

开发工具 中排名第 164

Download history 47640/week @ 2024-04-23 44238/week @ 2024-04-30 47943/week @ 2024-05-07 46867/week @ 2024-05-14 45500/week @ 2024-05-21 45701/week @ 2024-05-28 47248/week @ 2024-06-04 48525/week @ 2024-06-11 47619/week @ 2024-06-18 50447/week @ 2024-06-25 43232/week @ 2024-07-02 50924/week @ 2024-07-09 53740/week @ 2024-07-16 57118/week @ 2024-07-23 56816/week @ 2024-07-30 68782/week @ 2024-08-06

每月下载量 246,504
806 包中使用(直接使用4个)

MIT/Apache 协议

38KB
705 行(不包括注释)

impl-more

简洁的特质实现。

crates.io Documentation MIT or Apache 2.0 licensed
dependency status Download CircleCI

用法

struct MyNewTypeStruct(String);

impl_more::impl_as_ref!(MyNewTypeStruct => String);
impl_more::impl_as_mut!(MyNewTypeStruct => String);

impl_more::impl_deref!(MyNewTypeStruct => String);
impl_more::impl_deref_mut!(MyNewTypeStruct);
// or, to deref through String too:
// impl_more::forward_deref_and_mut!(MyNewTypeStruct, ref str);

impl_more::impl_from!(String => MyNewTypeStruct);
impl_more::impl_into!(MyNewTypeStruct => String);

enum MyEnum {
    Bar,
    Qux,
}

impl_more::impl_display_enum!(MyEnum, Bar => "bar", Qux => "qux");

enum Coords {
    Xy(i64, i64),
    Xyz(i64, i64, i64),
}

impl_more::impl_display_enum!(
    Coords,
    Xy(x, y) => "{x}, {y}",
    Xyz(x, y, z) => "{x}, {y}, {z}",
);

#[derive(Debug)]
struct MyError(eyre::Report);

impl_more::forward_display!(MyError);
impl_more::forward_error!(MyError);

let err = MyError(eyre::eyre!("something went wrong"));
assert_eq!(err.source().unwrap().to_string(), "something went wrong");

#[derive(Debug)]
enum Err {
    Io(std::io::Error),
    Generic(String),
}

impl_more::impl_display_enum!(Err, Io(err) => "{err}", Generic(msg) => "{msg}");
impl_more::impl_error_enum!(Err, Io(err) => err);

无运行时依赖