vin-macros 5.0.3

Procedural macros that power vin
Documentation
use proc_macro2::{TokenStream as TokenStream2};
use syn::{Ident};
use quote::{quote};
use super::names::*;

pub fn form_vin_hidden_struct(
    name: &Ident, 
) -> TokenStream2 {
    let hidden_struct_name = form_hidden_struct_name(name);
    quote! {
        struct #hidden_struct_name {
            state: ::vin::crossbeam::atomic::AtomicCell<::vin::vin_core::State>,
            close: ::vin::tokio::sync::Notify,
            id: ::vin::vin_core::ActorId,
        }

        impl Default for #hidden_struct_name {
            fn default() -> Self {
                Self {
                    state: Default::default(),
                    close: Default::default(),
                    id: "none".into(),
                }
            }
        }
    }
}