Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T03:36:56.817Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

derive_register_component.rs

30 lines · 899 B · rust
1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{DeriveInput, parse_macro_input};
4
5pub fn derive_register_component(input: TokenStream) -> TokenStream {
6    let input = parse_macro_input!(input as DeriveInput);
7
8    let name = input.ident;
9    let register_fn_name = syn::Ident::new(
10        &format!("__component_registry_internal_register_{}", name),
11        name.span(),
12    );
13    let expanded = quote! {
14        const _: () = {
15            struct AssertComponent<T: component::Component>(::std::marker::PhantomData<T>);
16            let _ = AssertComponent::<#name>(::std::marker::PhantomData);
17        };
18
19        #[allow(non_snake_case)]
20        fn #register_fn_name() {
21            component::register_component::<#name>();
22        }
23
24        component::__private::inventory::submit! {
25            component::ComponentFn::new(#register_fn_name)
26        }
27    };
28    expanded.into()
29}
30
Served at tenant.openagents/omega Member data and write actions are omitted.