mirror of
https://github.com/modrinth/code.git
synced 2026-08-25 09:04:55 +00:00
* feat(labrinth): initial preferences structure * feat(labrinth): use partially to derive partial structs * feat(labrinth): preference defaults * fix(labrinth): derive debug * feat(labrinth): user preferences db setup * feat(labrinth): user preferences routes * fix(labrinth): nested partial structs * fix(labrinth): serialize enums as snake case * refactor(labrinth-derive): rename to component-derive * feat(component-derive): nested components * refactor(component-derive): change suffixes to prefixes * refactor(component-derive): rename edit to partial * feat(component-derive): skip serializing empty option * refactor(labrinth): wrap errors * feat(component-derive): diff function * style(labrinth): fmt * refactor(labrinth): use component derive and only store overrides * chore: update query cache * docs(labrinth): add preferences to openapi * fix(labrinth): lock row for update * remove: partially * refactor(component-derive): split impls to separate functions * feat(component-derive): wrap impls to isolate naming * refactor(labrinth): split out auth conditions * feat(labrinth): store auto * feat(labrinth): store hosting privacy * style(labrinth): cargo fmt
16 lines
481 B
Rust
16 lines
481 B
Rust
//! This crate is currently unused, but will replace the `macro_rules!` component
|
|
//! logic in Labrinth experimental API.
|
|
|
|
use proc_macro::TokenStream;
|
|
use syn::{DeriveInput, parse_macro_input};
|
|
|
|
mod component;
|
|
|
|
#[proc_macro_derive(Component, attributes(component))]
|
|
pub fn component(input: TokenStream) -> TokenStream {
|
|
let input = parse_macro_input!(input as DeriveInput);
|
|
component::derive(&input)
|
|
.unwrap_or_else(|err| err.to_compile_error())
|
|
.into()
|
|
}
|