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}