use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
pub trait Quoted {
fn quote(&self) -> TokenStream;
}
impl Quoted for String {
fn quote(&self) -> TokenStream {
quote! { #self.to_owned() }
}
}
impl Quoted for glsl_lang::ast::SmolStr {
fn quote(&self) -> TokenStream {
let s = self.as_str();
quote! { #s.into() }
}
}
impl<T> Quoted for Option<T>
where
T: ToTokens,
{
fn quote(&self) -> TokenStream {
if let Some(ref x) = *self {
quote! { Some(#x) }
} else {
quote! { None }
}
}
}
impl<T> Quoted for &T
where
T: ToTokens + ?Sized,
{
fn quote(&self) -> TokenStream {
quote! { Box::new(#self) }
}
}