#macro #display #add #help #faster #write #coding

bin+lib add_macro

此包提供更多宏,以帮助您更快地编写代码!

3 个版本

0.3.2 2024 年 8 月 19 日
0.3.1 2024 年 8 月 3 日
0.2.2 2024 年 5 月 10 日
0.2.1 2024 年 4 月 26 日
0.1.7 2024 年 3 月 25 日

823Rust 模式

Download history 120/week @ 2024-04-22 23/week @ 2024-04-29 133/week @ 2024-05-06 12/week @ 2024-05-13 13/week @ 2024-05-20 4/week @ 2024-06-03 7/week @ 2024-06-10 14/week @ 2024-07-01 232/week @ 2024-07-29 39/week @ 2024-08-05

每月 271 次下载

MIT 许可证

28KB
204

Rust "add_macro" 包

githubcrates-iodocs-rs

此包提供更多宏,以帮助您更快地编写代码!

示例

use add_macro::{ re, Display, From, FromStr };

type Result<T> = std::result::Result<T, Error>;

#[derive(Debug, Display, From)]
enum Error {
    #[from]
    Io(std::io::Error),
    
    #[display = "Incorrect E-mail address format"]
    IncorrectEmail,
}

#[derive(Debug, Display, FromStr)]
#[display = "{value}"]
struct Email {
    value: String,
}

impl Email {
    fn parse(s: &str) -> Result<Self> {
        let re = re!(r"^[\w\-]+@[\w\-]+\.\w+$");

        if re.is_match(s) {
            Ok(Self {
                value: s.into(),
            })
        } else {
            Err(Error::IncorrectEmail)
        }
    }
}

#[derive(Debug, Display)]
#[display = "Name: {name}, Age: {age}, E-mail: {email}"]
struct Person {
    name: String,
    age: u8,
    email: Email,
}

impl Person {
    pub fn new<S>(name: S, age: u8, email: Email) -> Self
    where S: Into<String> {
        Self {
            name: name.into(),
            age,
            email,
        }
    }
}

fn main() -> Result<()> {
    let bob = Person::new("Bob", 22, "[email protected]".parse()?);

    println!("{bob}");

    Ok(())
}

依赖

~0.4–1.4MB
~29K SLoC