#traits #struct #getter-setter #mut #from-map

macro hashmap_derive

一个用于派生FromMap特质的proc_macro

1个不稳定版本

0.1.0 2020年1月26日

#31#getter-setter

Download history 234/week @ 2023-11-27 203/week @ 2023-12-04 116/week @ 2023-12-11 151/week @ 2023-12-18 81/week @ 2023-12-25 32/week @ 2024-01-01 95/week @ 2024-01-08 178/week @ 2024-01-15 237/week @ 2024-01-22 95/week @ 2024-01-29 105/week @ 2024-02-05 308/week @ 2024-02-12 138/week @ 2024-02-19 435/week @ 2024-02-26 170/week @ 2024-03-04 272/week @ 2024-03-11

1,049 每月下载量
用于 6 个crate(通过 from_map

Unlicense OR MIT OR Apache-2.0

5KB
81

shorthand

Crates.io: shorthand Documentation Build Status

shorthand 被定义为 一种快速书写系统,这正是这个库的目的;去除编写自己的库时产生的讨厌的样板代码。

这个库能做什么?

它通过为struct的字段派生getterssetters,使Rust编程更加方便。

use shorthand::ShortHand;

#[derive(ShortHand, Default)]
pub struct Example {
    number: usize,
    data: String,
}

let mut example = Example::default();

assert_eq!(example.number(), 0);
example.set_number(1);
assert_eq!(example.number(), 1);

assert_eq!(example.data(), &"".to_string());
example.set_data("hi".to_string());
assert_eq!(example.data(), &"hi".to_string());

否则,您将不得不手动编写这些代码

pub struct Example {
    number: usize,
    data: String,
}

#[allow(dead_code)]
impl Example {
    #[inline(always)]
    pub fn number(&self) -> usize { self.number }

    #[inline(always)]
    pub fn set_number(&mut self, value: usize) -> &mut Self {
        self.number = value;
        self
    }

    #[inline(always)]
    pub fn data(&self) -> &String { &self.data }

    #[inline(always)]
    pub fn set_data(&mut self, value: String) -> &mut Self {
        self.data = value;
        self
    }
}

如何开始?

只需将此库添加到您的 Cargo.toml 中的 [dependencies]

[dependencies]
shorthand = "0.1"

然后您可以为任何struct派生ShortHand

use shorthand::ShortHand;

#[derive(ShortHand)]
struct Example {
    field: usize,
}

您可以在此处找到文档。

功能请求和错误报告

您可以在此提问或报告错误。没有愚蠢的问题。

此库应尽可能方便,所以请随时提出功能请求。

参考

此库受到了以下crate的启发


lib.rs:

此crate仅存在,因为无法在同一个crate中导出一个trait和一个 proc_macro

您应该使用 from_map crate。

依赖项

~1.5MB
~33K SLoC