bpaf_derive/
help.rs

1use proc_macro2::TokenStream;
2use quote::ToTokens;
3use syn::{
4    parse::{Parse, ParseStream},
5    Expr, Result,
6};
7
8#[derive(Debug, Clone)]
9pub(crate) enum Help {
10    Custom(Box<Expr>),
11    Doc(String),
12}
13
14impl ToTokens for Help {
15    fn to_tokens(&self, tokens: &mut TokenStream) {
16        match self {
17            Help::Custom(c) => c.to_tokens(tokens),
18            Help::Doc(d) => d.to_tokens(tokens),
19        }
20    }
21}
22
23impl From<&str> for Help {
24    fn from(value: &str) -> Self {
25        Help::Doc(value.to_string())
26    }
27}
28
29impl Parse for Help {
30    fn parse(input: ParseStream) -> Result<Self> {
31        Ok(Help::Custom(input.parse()?))
32    }
33}