3 个版本
新 0.3.2 | 2024 年 8 月 19 日 |
---|---|
0.3.1 | 2024 年 8 月 3 日 |
0.2.2 |
|
0.2.1 |
|
0.1.7 |
|
823 在 Rust 模式 中
每月 271 次下载
28KB
204 行
Rust "add_macro" 包
此包提供更多宏,以帮助您更快地编写代码!
示例
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