reifydb-macro-impl 0.2.0

Implementation for ReifyDB derive macros. Not for direct use - use reifydb-macro, reifydb-derive, or reifydb-client-derive instead.
Documentation
# reifydb-macro-impl

Implementation for ReifyDB macros. **Not for direct use** - use `reifydb-macro`, `reifydb-derive`, or `reifydb-client-derive` instead.

## Why This Crate Exists

Proc-macro crates in Rust can **only** export functions tagged with `#[proc_macro]`, `#[proc_macro_derive]`, or `#[proc_macro_attribute]`. They cannot export regular functions or types.

This creates a problem: we need multiple proc-macro crates (`reifydb-macro`, `reifydb-derive`, `reifydb-client-derive`) that share the same implementation logic but generate code with different crate paths.

The solution is to put all implementation logic in this regular library crate using `proc_macro2` types. The proc-macro crates become thin wrappers that convert between `proc_macro::TokenStream` and `proc_macro2::TokenStream`.

## Architecture

```
                     reifydb-macro-impl
                    (this crate - shared logic)
                    /         |         \
                   /          |          \
        reifydb-macro   reifydb-derive   reifydb-client-derive
        (reifydb_type)     (reifydb)       (reifydb_client)
```

Each wrapper crate is a one-liner:

```rust
#[proc_macro_derive(FromFrame, attributes(frame))]
pub fn derive_from_frame(input: TokenStream) -> TokenStream {
    reifydb_macro_impl::derive_from_frame_with_crate(input.into(), "crate_name").into()
}
```

## Adding Support for a New Crate

To add `FromFrame` support for a new crate (e.g., `my-reifydb-wrapper`):

1. Create a new proc-macro crate
2. Add `reifydb-macro-impl` as a dependency
3. Create a thin wrapper:

```rust
use proc_macro::TokenStream;

#[proc_macro_derive(FromFrame, attributes(frame))]
pub fn derive_from_frame(input: TokenStream) -> TokenStream {
    reifydb_macro_impl::derive_from_frame_with_crate(input.into(), "my_reifydb_wrapper").into()
}
```

The generated code will reference types like `::my_reifydb_wrapper::Frame`, `::my_reifydb_wrapper::FromFrame`, etc.