kosame_dsl 0.3.0

Macro-based Rust ORM focused on developer ergonomics
Documentation
use proc_macro2::TokenStream;
use quote::{ToTokens, quote};

use crate::pretty::{PrettyPrint, pretty_print_ast};

pub struct Doc<'a, T> {
    inner: &'a T,
}

impl<'a, T> Doc<'a, T> {
    pub fn new(inner: &'a T) -> Self {
        Self { inner }
    }
}

impl<T> ToTokens for Doc<'_, T>
where
    T: PrettyPrint,
{
    fn to_tokens(&self, tokens: &mut TokenStream) {
        let doc = pretty_print_ast(self.inner);
        quote! { #[doc = #doc] }.to_tokens(tokens);
    }
}