#proc-macro #display #macro-derive #from-str #regex-parser #enums #derive

no-std parse-display

Procedural macro to implement Display and FromStr using common settings

22 releases

0.10.0 Aug 4, 2024
0.9.1 May 30, 2024
0.9.0 Feb 4, 2024
0.8.2 Jul 16, 2023
0.1.0 Jun 15, 2019

#110 in Rust patterns

Download history 51261/week @ 2024-08-22 62263/week @ 2024-08-29 60788/week @ 2024-09-05 49351/week @ 2024-09-12 49712/week @ 2024-09-19 59962/week @ 2024-09-26 55646/week @ 2024-10-03 54133/week @ 2024-10-10 64097/week @ 2024-10-17 67352/week @ 2024-10-24 61422/week @ 2024-10-31 61588/week @ 2024-11-07 62318/week @ 2024-11-14 66116/week @ 2024-11-21 63578/week @ 2024-11-28 58183/week @ 2024-12-05

261,054 downloads per month
Used in 253 crates (77 directly)

MIT/Apache

48KB
509 lines

parse-display

Crates.io Docs.rs Actions Status

This crate provides derive macro Display and FromStr. These macros use common helper attributes to specify the format.

Install

Add this to your Cargo.toml:

[dependencies]
parse-display = "0.10.0"

Documentation

See #[derive(Display)] documentation for details.

Example

use parse_display::{Display, FromStr};

#[derive(Display, FromStr, PartialEq, Debug)]
#[display("{a}-{b}")]
struct X {
  a: u32,
  b: u32,
}
assert_eq!(X { a:10, b:20 }.to_string(), "10-20");
assert_eq!("10-20".parse(), Ok(X { a:10, b:20 }));


#[derive(Display, FromStr, PartialEq, Debug)]
#[display(style = "snake_case")]
enum Y {
  VarA,
  VarB,
}
assert_eq!(Y::VarA.to_string(), "var_a");
assert_eq!("var_a".parse(), Ok(Y::VarA));

License

This project is dual licensed under Apache-2.0/MIT. See the two LICENSE-* files for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~2.3–4MB
~70K SLoC