pub struct ParseArgs<ReqArgs, OptArgs, RestArgs, Meta> {
pub args: ReqArgs,
pub opt_args: OptArgs,
pub rest_args: RestArgs,
pub meta: Meta,
}Fields§
§args: ReqArgs§opt_args: OptArgs§rest_args: RestArgs§meta: MetaImplementations§
Source§impl ParseArgs<Marker<()>, Marker<()>, Marker<()>, ()>
impl ParseArgs<Marker<()>, Marker<()>, Marker<()>, ()>
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/test.rs (line 21)
8fn main() {
9 let attr: Attribute = parse_quote! {
10 #[my_attr(
11 "hello",
12 "world",
13 122,
14 conf1 = 114 + 514,
15 key_value = SomeType<A, B>,
16 path_only,
17 nested(tea(green_tea)))
18 ]
19 };
20
21 let parser = ParseArgs::new()
22 .args::<(LitStr, LitStr)>()
23 .opt_args::<(Lit, Lit)>()
24 .rest_args::<Vec<Lit>>()
25 .meta((
26 ("path_only", path_only()),
27 ("key_value", key_value::<Type>()),
28 ("kv_optional", key_value::<Expr>()).optional(),
29 conflicts((
30 ("conf1", path_only()).value("conf1"),
31 ("conf1", key_value::<Expr>()).value("conf1_expr"),
32 ("conf2", key_value::<Expr>()).value("conf2"),
33 )),
34 (
35 "nested",
36 meta_list((
37 ("milk", path_only()),
38 (
39 "tea",
40 meta_list(conflicts((
41 ("red_tea", path_only()).value("red_tea"),
42 ("green_tea", path_only()).value("green_tea"),
43 ))),
44 ),
45 )),
46 ),
47 ));
48
49 let ParseArgs {
50 args: (_, _), // ("hello", "world")
51 opt_args: (Some(_), None), // (Some(112), None)
52 rest_args: _, // []
53 meta:
54 (
55 true,
56 _, // SomeType<A, B>
57 None,
58 "conf1_expr",
59 (false, "green_tea"),
60 ),
61 } = parser.parse_attr(&attr).unwrap()
62 else {
63 unreachable!()
64 };
65}Source§impl<ReqArgs, OptArgs, RestArgs, Meta> ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
Sourcepub fn args<T: ParseRequiredArgs>(
self,
) -> ParseArgs<Marker<T>, OptArgs, RestArgs, Meta>
pub fn args<T: ParseRequiredArgs>( self, ) -> ParseArgs<Marker<T>, OptArgs, RestArgs, Meta>
Examples found in repository?
examples/test.rs (line 22)
8fn main() {
9 let attr: Attribute = parse_quote! {
10 #[my_attr(
11 "hello",
12 "world",
13 122,
14 conf1 = 114 + 514,
15 key_value = SomeType<A, B>,
16 path_only,
17 nested(tea(green_tea)))
18 ]
19 };
20
21 let parser = ParseArgs::new()
22 .args::<(LitStr, LitStr)>()
23 .opt_args::<(Lit, Lit)>()
24 .rest_args::<Vec<Lit>>()
25 .meta((
26 ("path_only", path_only()),
27 ("key_value", key_value::<Type>()),
28 ("kv_optional", key_value::<Expr>()).optional(),
29 conflicts((
30 ("conf1", path_only()).value("conf1"),
31 ("conf1", key_value::<Expr>()).value("conf1_expr"),
32 ("conf2", key_value::<Expr>()).value("conf2"),
33 )),
34 (
35 "nested",
36 meta_list((
37 ("milk", path_only()),
38 (
39 "tea",
40 meta_list(conflicts((
41 ("red_tea", path_only()).value("red_tea"),
42 ("green_tea", path_only()).value("green_tea"),
43 ))),
44 ),
45 )),
46 ),
47 ));
48
49 let ParseArgs {
50 args: (_, _), // ("hello", "world")
51 opt_args: (Some(_), None), // (Some(112), None)
52 rest_args: _, // []
53 meta:
54 (
55 true,
56 _, // SomeType<A, B>
57 None,
58 "conf1_expr",
59 (false, "green_tea"),
60 ),
61 } = parser.parse_attr(&attr).unwrap()
62 else {
63 unreachable!()
64 };
65}Sourcepub fn opt_args<T: ParseOptionalArgs>(
self,
) -> ParseArgs<ReqArgs, Marker<T>, RestArgs, Meta>
pub fn opt_args<T: ParseOptionalArgs>( self, ) -> ParseArgs<ReqArgs, Marker<T>, RestArgs, Meta>
Examples found in repository?
examples/test.rs (line 23)
8fn main() {
9 let attr: Attribute = parse_quote! {
10 #[my_attr(
11 "hello",
12 "world",
13 122,
14 conf1 = 114 + 514,
15 key_value = SomeType<A, B>,
16 path_only,
17 nested(tea(green_tea)))
18 ]
19 };
20
21 let parser = ParseArgs::new()
22 .args::<(LitStr, LitStr)>()
23 .opt_args::<(Lit, Lit)>()
24 .rest_args::<Vec<Lit>>()
25 .meta((
26 ("path_only", path_only()),
27 ("key_value", key_value::<Type>()),
28 ("kv_optional", key_value::<Expr>()).optional(),
29 conflicts((
30 ("conf1", path_only()).value("conf1"),
31 ("conf1", key_value::<Expr>()).value("conf1_expr"),
32 ("conf2", key_value::<Expr>()).value("conf2"),
33 )),
34 (
35 "nested",
36 meta_list((
37 ("milk", path_only()),
38 (
39 "tea",
40 meta_list(conflicts((
41 ("red_tea", path_only()).value("red_tea"),
42 ("green_tea", path_only()).value("green_tea"),
43 ))),
44 ),
45 )),
46 ),
47 ));
48
49 let ParseArgs {
50 args: (_, _), // ("hello", "world")
51 opt_args: (Some(_), None), // (Some(112), None)
52 rest_args: _, // []
53 meta:
54 (
55 true,
56 _, // SomeType<A, B>
57 None,
58 "conf1_expr",
59 (false, "green_tea"),
60 ),
61 } = parser.parse_attr(&attr).unwrap()
62 else {
63 unreachable!()
64 };
65}Sourcepub fn rest_args<T: ParseRestArgs>(
self,
) -> ParseArgs<ReqArgs, OptArgs, Marker<T>, Meta>
pub fn rest_args<T: ParseRestArgs>( self, ) -> ParseArgs<ReqArgs, OptArgs, Marker<T>, Meta>
Examples found in repository?
examples/test.rs (line 24)
8fn main() {
9 let attr: Attribute = parse_quote! {
10 #[my_attr(
11 "hello",
12 "world",
13 122,
14 conf1 = 114 + 514,
15 key_value = SomeType<A, B>,
16 path_only,
17 nested(tea(green_tea)))
18 ]
19 };
20
21 let parser = ParseArgs::new()
22 .args::<(LitStr, LitStr)>()
23 .opt_args::<(Lit, Lit)>()
24 .rest_args::<Vec<Lit>>()
25 .meta((
26 ("path_only", path_only()),
27 ("key_value", key_value::<Type>()),
28 ("kv_optional", key_value::<Expr>()).optional(),
29 conflicts((
30 ("conf1", path_only()).value("conf1"),
31 ("conf1", key_value::<Expr>()).value("conf1_expr"),
32 ("conf2", key_value::<Expr>()).value("conf2"),
33 )),
34 (
35 "nested",
36 meta_list((
37 ("milk", path_only()),
38 (
39 "tea",
40 meta_list(conflicts((
41 ("red_tea", path_only()).value("red_tea"),
42 ("green_tea", path_only()).value("green_tea"),
43 ))),
44 ),
45 )),
46 ),
47 ));
48
49 let ParseArgs {
50 args: (_, _), // ("hello", "world")
51 opt_args: (Some(_), None), // (Some(112), None)
52 rest_args: _, // []
53 meta:
54 (
55 true,
56 _, // SomeType<A, B>
57 None,
58 "conf1_expr",
59 (false, "green_tea"),
60 ),
61 } = parser.parse_attr(&attr).unwrap()
62 else {
63 unreachable!()
64 };
65}Sourcepub fn meta<T: ParseMeta>(
self,
meta: T,
) -> ParseArgs<ReqArgs, OptArgs, RestArgs, T>
pub fn meta<T: ParseMeta>( self, meta: T, ) -> ParseArgs<ReqArgs, OptArgs, RestArgs, T>
Examples found in repository?
examples/test.rs (lines 25-47)
8fn main() {
9 let attr: Attribute = parse_quote! {
10 #[my_attr(
11 "hello",
12 "world",
13 122,
14 conf1 = 114 + 514,
15 key_value = SomeType<A, B>,
16 path_only,
17 nested(tea(green_tea)))
18 ]
19 };
20
21 let parser = ParseArgs::new()
22 .args::<(LitStr, LitStr)>()
23 .opt_args::<(Lit, Lit)>()
24 .rest_args::<Vec<Lit>>()
25 .meta((
26 ("path_only", path_only()),
27 ("key_value", key_value::<Type>()),
28 ("kv_optional", key_value::<Expr>()).optional(),
29 conflicts((
30 ("conf1", path_only()).value("conf1"),
31 ("conf1", key_value::<Expr>()).value("conf1_expr"),
32 ("conf2", key_value::<Expr>()).value("conf2"),
33 )),
34 (
35 "nested",
36 meta_list((
37 ("milk", path_only()),
38 (
39 "tea",
40 meta_list(conflicts((
41 ("red_tea", path_only()).value("red_tea"),
42 ("green_tea", path_only()).value("green_tea"),
43 ))),
44 ),
45 )),
46 ),
47 ));
48
49 let ParseArgs {
50 args: (_, _), // ("hello", "world")
51 opt_args: (Some(_), None), // (Some(112), None)
52 rest_args: _, // []
53 meta:
54 (
55 true,
56 _, // SomeType<A, B>
57 None,
58 "conf1_expr",
59 (false, "green_tea"),
60 ),
61 } = parser.parse_attr(&attr).unwrap()
62 else {
63 unreachable!()
64 };
65}Trait Implementations§
Source§impl<ReqArgs: Debug, OptArgs: Debug, RestArgs: Debug, Meta: Debug> Debug for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs: Debug, OptArgs: Debug, RestArgs: Debug, Meta: Debug> Debug for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
Source§impl<ReqArgs, OptArgs, RestArgs, Meta> ParseAttrTrait for ParseArgs<Marker<ReqArgs>, Marker<OptArgs>, Marker<RestArgs>, Meta>where
ReqArgs: ParseRequiredArgs,
OptArgs: ParseOptionalArgs,
RestArgs: ParseRestArgs,
Meta: ParseMeta,
impl<ReqArgs, OptArgs, RestArgs, Meta> ParseAttrTrait for ParseArgs<Marker<ReqArgs>, Marker<OptArgs>, Marker<RestArgs>, Meta>where
ReqArgs: ParseRequiredArgs,
OptArgs: ParseOptionalArgs,
RestArgs: ParseRestArgs,
Meta: ParseMeta,
type Output = ParseArgs<<ReqArgs as ParseRequiredArgs>::Output, <OptArgs as ParseOptionalArgs>::Output, RestArgs, <Meta as ParseMeta>::Output>
fn parse(self, input: ParseStream<'_>) -> Result<Self::Output>
fn parse_attr(self, input: &Attribute) -> Result<Self::Output>
fn parse_concat_attrs<'r, I>(self, input: I) -> Result<Self::Output>
Auto Trait Implementations§
impl<ReqArgs, OptArgs, RestArgs, Meta> Freeze for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> RefUnwindSafe for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> Send for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> Sync for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> Unpin for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
impl<ReqArgs, OptArgs, RestArgs, Meta> UnwindSafe for ParseArgs<ReqArgs, OptArgs, RestArgs, Meta>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more